在docker容器中,同时运行java项目和nginx

1、打镜像所需内容结构如下

  

 1、Dockerfile内容如下

复制代码
FROM frolvlad/alpine-java:jdk8-slim
LABEL version="1.0" maintainer="LCZHCH@inspur.com"

ARG BASE_DIR=/home/nrms-service
ARG APP_NAME=nrms-export

ENV SW_AGENT_NAME="$APP_NAME" \
    JAR_PATH="$BASE_DIR/$APP_NAME.jar"
ENV LOG_DIR=/data/iot/jar/logs
#RUN #apk add --update font-adobe-100dpi ttf-dejavu fontconfig

ADD $APP_NAME*.jar $JAR_PATH

# 安装 Nginx
RUN echo "https://mirror.tuna.tsinghua.edu.cn/alpine/v3.4/main" > /etc/apk/repositories \
&& echo "https://mirror.tuna.tsinghua.edu.cn/alpine/v3.4/community" >> /etc/apk/repositories \
&& echo "https://mirror.tuna.tsinghua.edu.cn/alpine/edge/testing" >> /etc/apk/repositories \
&& echo "https://pkgs.alpinelinux.org/package/edge/main/x86_64/nginx" >> /etc/apk/repositories

RUN apk add nginx

# 将自定义配置文件复制到容器中
COPY nginx.conf /etc/nginx/nginx.conf

# 复制启动脚本到容器内并给予执行权限
COPY start.sh /home/start.sh
RUN chmod +x /home/start.sh

EXPOSE 8087 31613 80

ENTRYPOINT ["/home/start.sh"] 

# 并行运行 Nginx 和 Java 应用
#CMD nginx -g 'daemon off;' && nohup java -jar /home/nrms-service/nrms-export.jar

#ENTRYPOINT ["java","-jar","/home/nrms-service/nrms-export.jar"]
复制代码

Dockerfile说明:

1、基础镜像是frolvlad/alpine-java:jdk8-slim,是alpine系统,可通过apk包管理来安装nginx等各种服务,参考地址:https://www.cnblogs.com/maxiaohei/p/16371668.html。

2、执行apk add nginx时,下载不下来,需要将nginx的相关地址加到/etc/apk/repositories中,具体做法是在https://pkgs.alpinelinux.org/packages中搜索nginx,选择哪一个,点进去,将路径复制下来,添加到/etc/apk/repositories中。参考地址:https://blog.51cto.com/u_15715098/5733169。

3、Dockerfile中CMD只能写一个,如果有多个,只执行最后一个。用&&将两个启动命令放一起,打镜像部署后,只能CMD后紧跟的第一个命令能执行成功,&&后的执行不成功。不知是否写法有问题。最后是加了个 启动文件才可以。

3、start.sh文件内容如下

复制代码
#!/bin/sh
echo "Hello, World!"

#nginx -g 'daemon off;' & nohup java -jar /home/nrms-service/nrms-export.jar >msg.log 2>&1 &
# 函数定义,启动Nginx
start_nginx() {
  nginx -g 'daemon off;'
}
 
# 函数定义,启动Java应用
start_java() {
  java -jar /home/nrms-service/nrms-export.jar
}
 
# 在后台并行启动Nginx和Java应用
start_nginx &
start_java
 
# 等待所有后台进程
wait
复制代码

 

posted @   又逢落花时节  阅读(168)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示