需求:将原来的单个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: ./pcimage: "jbgs_pc:1.0.8"restart: alwaysexpose:- "7777"ports:#- "8012:7777"- "9000:7777"java:build: ./javaimage: "jbgs_backend:1.0.8"restart: alwaysexpose:#- "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方法里加上argsenvironment:- "spring.profiles.active=dev"
前端包pc|mobile
和入门教程的dockerFile不同的只是把Expose拿到docker-compose.yml中不在赘述了。
其它的nginx配置也不赘述了
后端包
打完jar包后,通过压缩软件把里面的application-dev.ymlapplication-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#RUNRUN mkdir -p ${APP_LOG_PATH}#COPYCOPY ./wjjbgs-1.0-SNAPSHOT.jar /root#ENTRYPOINT Æô¶¯ÃüÁîWORKDIR /rootENTRYPOINT ["java" ,"-jar"]
ok,完工,目录可参照最上面发的