docker实现多个jar部署在一个容器中(版本1)

docker实现多个jar部署在一个容器中

因为项目中,需要运行多个容器,刚开始将每一个服务部署在一个单独的容器中,这样可以很轻松的实现自动部署,并且可以实现一个项目部署,多个环境运行。
但是公司申请了一个云服务器,内存才4G,无法做的敏捷部署,所以考虑将多个微服务相关联的部署到一个容器中,比如基础服务放一个容器,其他服务放另外一个容器。
这样,公司只要申请两台云服务器,不但可以将一个微服务项目,分别部署在两台云服务器上面,而且还节约内存。
经过测量差不多5个jspringboot服务能解压1/4的内存。

首先看一下项目结构:
在这里插入图片描述
两个dockerfile文件对应两个开发环境。
Dockerfile_cloud文件内容:

FROM xxxxx/java-env:1.0.0
MAINTAINER xxx

COPY lin-server-api/target/lin-server-api-1.1.0.jar /lin-server-api-1.1.0.jar
COPY lin-server-box/lin-box-server/target/lin-box-server-1.1.0.jar /lin-box-server-1.1.0.jar
COPY lin-server-config/lin-config-server/target/lin-config-server-1.1.0.jar /lin-config-server-1.1.0.jar
COPY lin-server-eureka/target/lin-server-eureka-1.1.0.jar /lin-server-eureka-1.1.0.jar
COPY lin-server-message/lin-message-server/target/lin-message-server-1.1.0.jar /lin-message-server-1.1.0.jar
COPY lin-server-user/lin-user-server/target/lin-user-server-1.1.0.jar /lin-user-server-1.1.0.jar


COPY start_cloud.sh /usr/bin/start_cloud.sh
RUN chmod +x /usr/bin/start_cloud.sh
CMD nohup sh -c "start_cloud.sh && java -jar /lin-server-eureka-1.1.0.jar"

start_cloud.sh文件内容:

#!/bin/sh
nohup java -jar /lin-server-api-1.1.0.jar --spring.profiles.active=cloud > api_server.log &
nohup java -jar /lin-config-server-1.1.0.jar --spring.profiles.active=cloud -> config_server.log &
nohup java -jar /lin-message-server-1.1.0.jar --spring.profiles.active=cloud > message.log &
nohup java -jar /lin-user-server-1.1.0.jar --spring.profiles.active=cloud > user.log &

这里解释一下,Dockerfile_cloud文件将多个jar文件拷贝到之前生成的java环境中,并且start_cloud.sh里面记录了jar包的启动逻辑,如果是测试环境的话,会拷贝start_test.sh到镜像中,里面是启动测试环境的启动逻辑。

//复制启动脚本,并且为脚本赋予执行权限
COPY start_cloud.sh /usr/bin/start_cloud.sh
RUN chmod +x /usr/bin/start_cloud.sh
//在dockerfile中执行多个shell命令的方式,如果只执行start_cloud.sh的话没有前台进程,无法保持docker容器的运行,加一个&& java -jar /lin-server-eureka-1.1.0.jar,保证项目会至少有一个前台进程在运行
CMD nohup sh -c "start_cloud.sh && java -jar /lin-server-eureka-1.1.0.jar"

项目的构建和启动
docker build -t xxx:1.1.0 -f ./Dockerfile_cloud .
docker push xxx:1.1.0
docker run -d --name zyydx-server -p 8105:8105 -p 8106:8106 -v /data/zyydx/log:/data/zyydx/log -v /data/zyydx/download:/data/zyydx/download xxx:1.1.0

另外jenkins下载并部署此应用的文章链接:

https://blog.csdn.net/lwy572039941/article/details/95337864

  • 1
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

97年的典藏版

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值