Docker单个容器运行多个war和jar的方法详解
作者:爱码少年 00fly.online
这篇文章主要为大家详细介绍了Docker单个容器运行多个war和jar的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
方法一:
#基础镜像 FROM java:8 RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime RUN echo 'Asia/Shanghai' >/etc/timezone #把你的项目war包引入到容器的root目录下 COPY *.war /app.war RUN echo \ "#!/bin/sh\n"\ "nohup java -jar /app.war --server.port=8085 &\n"\ "nohup java -jar /app.war --server.port=8086 &"\ >> /start.sh RUN chmod +x /start.sh CMD nohup sh -c "/start.sh && java -jar /app.war --server.port=8087"
方法二:
#基础镜像 FROM java:8 RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime RUN echo 'Asia/Shanghai' >/etc/timezone #把你的项目war包引入到容器的root目录下 COPY *.war /app.war COPY start.sh /start.sh RUN chmod +x /start.sh #项目的启动方式 ENTRYPOINT ["./start.sh"]
start.sh
#!/bin/bash
# 命令后加入 & ,保持程序后台持续运行
nohup java -jar /app.war --server.port=8085 &
nohup java -jar /app.war --server.port=8086 &
# 死循环,保持docker前台运行
while [[ true ]]; do
sleep 1
done
或者(推荐下面的写法,上面的while写法可能会有性能损耗,待验证)
#!/bin/bash # 命令后加入 & ,保持程序后台持续运行 nohup java -jar /app.war --server.port=8085 & java -jar /app.war --server.port=8086
docker-compose.yml
version: '3.8'
services:
demo-dk:
image: demo-dk:1.0
build:
context: .
dockerfile: Dockerfile
ports:
- "8085:8085"
- "8086:8086"
- "8087:8087"
logging:
driver: 'json-file'
options:
max-size: '30m'
max-file: '5' shell.sh
docker-compose down && docker rmi -f demo-dk:1.0 && docker-compose up -d --build
测试时将war、Dockerfile、shell.sh、start.sh 放在同一目录下,执行
sh shell.sh
到此这篇关于Docker单个容器运行多个war和jar的方法详解的文章就介绍到这了,更多相关Docker容器运行多个war和jar内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
