Docker单个容器运行多个war和jar的方法详解

 更新时间:2026年04月14日 09:21:10   作者:爱码少年 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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Docker连接mongodb实现过程及代码案例

    Docker连接mongodb实现过程及代码案例

    这篇文章主要介绍了Docker连接mongodb实现过程及代码案例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • Docker方式部署OceanBase数据库的完整步骤

    Docker方式部署OceanBase数据库的完整步骤

    OceanBase数据库是一个高性能的分布式关系型数据库,它支持多种部署方式,包括但不限于单机部署、集群部署等,这篇文章主要介绍了Docker方式部署OceanBase数据库的完整步骤,需要的朋友可以参考下
    2025-04-04
  • Dockerfile基础分享

    Dockerfile基础分享

    在Docker中,构建一个自定义镜像共有两种方法,一是通过commit指令构建,二是通过Dockerfile文件构建。今天我们主要来详细探讨下Dockerfile的一些基础。
    2017-01-01
  • docker容器里执行apt-get update慢的解决过程

    docker容器里执行apt-get update慢的解决过程

    这篇文章主要介绍了docker容器里执行apt-get update慢的解决过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2026-03-03
  • Docker前后端项目部署完整步骤记录

    Docker前后端项目部署完整步骤记录

    最近的开发中也确实体会到了这一好处,因为我们项目涉及给客户私有化部署及演示等,使用 Docker 部署,在镜像导出迁移方面很方便,这篇文章主要给大家介绍了关于Docker前后端项目部署的相关资料,需要的朋友可以参考下
    2024-04-04
  • 使用非root用户安装及启动docker的问题(rootless模式运行)

    使用非root用户安装及启动docker的问题(rootless模式运行)

    docker是使用--userns-remap容器用户映射宿主机用户的方式来解决问题,用户和组的映射由两个配置文件来控制,分别是/etc/subuid和/etc/subgid,本文给大家介绍非root用户启动docker的问题,感兴趣的朋友一起看看吧
    2022-05-05
  • Docker Compose容器编排深度解析与实战小结

    Docker Compose容器编排深度解析与实战小结

    Docker Compose 是 Docker 官方推出的开源项目,用于定义和运行多个 Docker 容器的应用工具,简化了多容器应用的部署和管理,本文介绍Docker Compose:容器编排深度解析与实战指南,感兴趣的朋友一起看看吧
    2025-12-12
  • mac docker如何修改daemon.json文件

    mac docker如何修改daemon.json文件

    这篇文章主要介绍了mac docker如何修改daemon.json文件问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • 使用docker部署django技术栈项目的方法步骤

    使用docker部署django技术栈项目的方法步骤

    这篇文章主要介绍了使用docker部署django技术栈项目的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • Docker(黑马spring cloud笔记)详解

    Docker(黑马spring cloud笔记)详解

    这篇文章主要介绍了Docker(黑马spring cloud笔记)详解,本文章内容详细,具有很好的参考价值,希望对大家有所帮助,需要的朋友可以参考下<BR>
    2023-01-01

最新评论