需求:将原来的单个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,完工,目录可参照最上面发的