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

相关文章

  • 使用dockercompose搭建springboot-mysql-nginx应用

    使用dockercompose搭建springboot-mysql-nginx应用

    这篇文章主要介绍了使用dockercompose搭建springboot-mysql-nginx应用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-03-03
  • docker 部署 Elasticsearch kibana及ik分词器详解

    docker 部署 Elasticsearch kibana及ik分词器详解

    这篇文章主要介绍了docker 部署 Elasticsearch kibana及ik分词器详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-05-05
  • Docker的基本命令使用笔记

    Docker的基本命令使用笔记

    这篇文章主要介绍了Docker的基本命令使用笔记,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • Docker容器搭建本地私有仓库详情

    Docker容器搭建本地私有仓库详情

    这篇文章主要介绍了Docker容器搭建本地私有仓库详情,Docker 官方提供了一个搭建私有仓库的镜像 registry ,运行该镜像的容器并且对外暴露5000端口就ok了
    2022-08-08
  • Docker容器化部署尝试——多容器通信(node+mongoDB+nginx)

    Docker容器化部署尝试——多容器通信(node+mongoDB+nginx)

    这篇文章主要介绍了Docker容器化部署尝试——多容器通信(node+mongoDB+nginx),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12
  • docker commit与export区别小结

    docker commit与export区别小结

    本文主要介绍了docker commit与export区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-12-12
  • docker容器配置启动参数

    docker容器配置启动参数

    通过添加参数,我们可以在启动 Docker 容器时灵活地配置容器的行为,本文介绍了通过命令行和 Dockerfile 两种方式添加参数的方法,并给出了常用参数的示例,希望本文能帮助您理解如何在 Docker 启动时添加参数,并正确地配置和管理 Docker容器
    2023-10-10
  • Docker部署RabbitMQ的实现方法(图文并茂)

    Docker部署RabbitMQ的实现方法(图文并茂)

    本文详细介绍了如何使用Docker部署RabbitMQ的步骤,包括拉取RabbitMQ镜像,创建与授权文件夹,创建RabbitMQ容器,查看启动日志,访问控制台和登录等,全程详细的参数解释和操作步骤,让Docker部署RabbitMQ变得简单易行
    2024-10-10
  • docker registry删除远程仓库镜像实现方式

    docker registry删除远程仓库镜像实现方式

    文章介绍如何清理Docker Registry中堆积的镜像,通过配置删除功能、启动容器、查看镜像信息并执行删除操作,同时提供基于web-ui的管理方案,优化存储空间使用
    2025-09-09
  • 基于Docker的几种常用CentOS7镜像小结

    基于Docker的几种常用CentOS7镜像小结

    本文主要介绍了使用 Docker 来制作CentOS 环境的镜像,并上传到阿里云的 Docker 镜像仓库,具有一定的参考价值,感兴趣的可以了解一下
    2021-11-11

最新评论