【Docker-compose spring boot】一键打包布署,同时拆分jar包配置文件实践

需求:将原来的单个docker ssh脚本打包,手动启动,改成使用docker-compose脚本一键打包布署。

缺点:docker-compose down 无法删除镜像,导致后续启动没注意就启动了旧镜像,被坑了几次,后面知道加 docker-compose up --build  重新打包覆盖镜像。

还不会装docker-compose的看这docker-compose入门教程

如下是我一次性部署启动前后端三个docker包的脚本文件路径

.
├── build-img-backend.sh
├── build-img-mobile.sh
├── build-img-pc.sh
├── docker-compose.yml
├── java
│   ├── Dockerfile
│   └── wjjbgs-1.0-SNAPSHOT.jar
|   └── application-dev.yml
|   └── application-prod.yml
├── jbgs_backend_1.0.1.tar
├── mobile
│   ├── dist
│   │   ├── css
│   │   ├── imgs
│   │   ├── index.html
│   │   ├── js
│   │   └── static
│   ├── docker
│   │   ├── default.conf
│   │   └── nginx.conf
│   └── Dockerfile
└── pc
    ├── dist
    │   ├── css
    │   ├── imgs
    │   ├── index.html
    │   ├── js
    │   └── static
    ├── docker
    │   ├── default.conf
    │   └── nginx.conf
    └── Dockerfile

其中ssh 是单个打包的脚本此篇跳过

docker-compose.yml

#使用的打包版本,写1的话基本会报错
version: "3.0"
services:
#服务名自己定
    mobile:
#放置docker打包文件的相对docker-compose.yml的路径
        build: ./mobile
#自定义打包的镜像名
        image: "jbgs_mobile:1.0.8"
#无所谓的配置项
        restart: always
#镜像打出来的容器开的端口
        expose:
        - "7777"
#容器到宿主机的端口映射
        ports:
        #- "8011:7777"
        - "8999:7777"
    pc:
        build: ./pc
        image: "jbgs_pc:1.0.8"
        restart: always
        expose:
        - "7777"
        ports:
        #- "8012:7777"
        - "9000:7777"
    java:
        build: ./java
        image: "jbgs_backend:1.0.8"
        restart: always
        expose:
        #- "8081"
        - "8080"
        ports:
        #- "8013:8081"
        - "8888:8080"
#这个是对应Dockerfile 里的EntryPoint 相当于接在后面的命令
        command: [
          '-Xms4000m',
          '-Xmx4000m',
          'wjjbgs-1.0-SNAPSHOT.jar'
        ]
#这个是宿主机存储空间与容器存储空间的映射,方便修改配置文件
        volumes:
          - ./java/application-dev.yml:/root/application-dev.yml
#将springboot的启动项提出来,方便选择配置,要想生效需要注意在main方法里加上args
        environment:
          - "spring.profiles.active=dev"

前端包pc|mobile

和入门教程的dockerFile不同的只是把Expose拿到docker-compose.yml中不在赘述了。

其它的nginx配置也不赘述了

后端包

打完jar包后,通过压缩软件把里面的application-dev.yml application-prod.yml删掉后放外面。

注意要想environment里的配置生效需要修改Applicaton.java如下,args不能漏

public class Application {

    public static void main(String[] args) {

        SpringApplication.run(Application.class,args);

    }
}

Dockerfile

# Citybrain APP Dockerfile
# Version 1.0
# Base images »ù´¡¾µÏñ

FROM openjdk:8-alpine

#LABEL ά»¤ÕßÐÅÏ¢

LABEL *** jbgs

#ENV ±äÁ¿

ENV TZ='Asia/Shanghai'
#ENV DATA_API_ADDRESS="http://172.18.109.233"
ENV APP_LOG_PATH=/citybrain/cockpit-back/logs

#RUN
RUN mkdir -p ${APP_LOG_PATH}

#COPY
COPY ./wjjbgs-1.0-SNAPSHOT.jar /root

#ENTRYPOINT Æô¶¯ÃüÁî

WORKDIR /root

ENTRYPOINT ["java" ,"-jar"]

ok,完工,目录可参照最上面发的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值