docker

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > docker > Docker容器运行多个war和jar

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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文