Docker 单个容器运行多个war、jar
程序员文章站
2022-07-14 08:49:33
...
- 方法一:
Dockerfile
#基础镜像
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"
- 方法二
Dockerfile
#基础镜像
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 shell.sh /shell.sh
#项目的启动方式
ENTRYPOINT ["./shell.sh"]
shell.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
或者
#!/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'
docker.sh
docker-compose down && docker rmi -f demo-dk:1.0 && docker-compose up -d --build
测试时将war、Dockerfile、shell.sh、docker.sh 放在同一目录下,执行
sh docker.sh
上一篇: element-ui中的table记住分页多选框选中的数据
下一篇: 关于%和 /的解释