编写docker-compose
因为我先在windows的docker部署看看有无问题, 再部署到服务器上, 所以dev的环境指的是我windows的docker, prod指的是服务器上的
docker-compose-dev.yml
version: '3'
services:
mysql:
image: mysql:5.7
restart: always
container_name: brionac-mysql
command: --character-set-server=utf8 --collation-server=utf8_general_ci
environment:
MYSQL_ROOT_PASSWORD:
ports:
- 3306:3306
volumes:
- D:\Temp\mydata\mysql\data:/var/lib/mysql #数据目录挂载
- D:\Temp\mydata\mysql\conf:/etc/mysql/conf.d #启动脚本
brionac-backend:
container_name: brionac-backend
build: ../brionac-backend #相对于你的dockercompose文件路径
ports:
- "8080:8081" # 将主机的 8080 端口映射到服务的 8081 端口
depends_on:
- mysql
docker-compose-prod.yml
version: '3'
services:
mysql:
image: mysql:5.7
restart: always
container_name: brionac-mysql
command: --character-set-server=utf8 --collation-server=utf8_general_ci
environment:
MYSQL_ROOT_PASSWORD: #修改为你的密码
ports:
- 3306:3306
volumes:
- /usr/project/mysql/data:/var/lib/mysql #数据目录挂载
- /usr/project/mysql/conf:/etc/mysql/conf.d #启动脚本
brionac-backend:
container_name: brionac-backend
build: ../brionac-backend #相对于你的dockercompose文件路径
ports:
- "8080:8080" # 将主机的 8080 端口映射到服务的 8080 端口
depends_on:
- mysql
编写application
application-dev.yaml
server:
port: 8081
spring:
mvc:
pathmatch:
matching-strategy: ant_path_matcher
servlet:
multipart:
max-file-size: 100MB
max-request-size: 100MB
enabled: true
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/database_name?allowMultiQueries=true
username: root
password: 123456
application-prod.yaml
server:
# 更换端口, 加以区分环境
port: 8080
spring:
mvc:
pathmatch:
matching-strategy: ant_path_matcher
servlet:
multipart:
max-file-size: 100MB
max-request-size: 100MB
enabled: true
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
#下面这里注意原本的ip要改为你的mysql容器名
url: jdbc:mysql://brionac-mysql:3306/brionac?allowMultiQueries=true
username: root
# mysql容器的密码
password:
application.properties
# 指定运行环境
spring.profiles.active=prod
编写Dockerfile
# 使用 OpenJDK 基础镜像
FROM openjdk:11-jre-slim
# 设置工作目录
WORKDIR /app
# 将构建好的 JAR 文件复制到镜像中
COPY target/brionac-backend-1.0-SNAPSHOT.jar /app/brionac-backend.jar
# 指定运行环境, 要注意改
ENV spring.profiles.active="prod"
# 指定容器启动时执行的命令
ENTRYPOINT ["java","-jar","brionac-backend.jar"]
切换环境
将Dockerfile文件的spring.profiles.active 和 application.properties的spring.profiles.active都要改为对应的环境即可
注意事项
- 切换环境时, Dockerfile文件的spring.profiles.active 和 application.properties的spring.profiles.active都要改为对应的环境
- 记得如果application文件有过改动, 则需要重新maven打包
- 都是docker的部署的项目, 连接的时候ip改为容器名, 这点在application-prod.yaml中有体现
附上项目目录结构