打成jar包前application.yml中的配置
spring:
datasource:
druid:
driver-class-name: com.mysql.cj.jdbc.Driver
# mysql8.0一定要加allowPublicKeyRetrieval=true,我就是没有加,才连不上数据库
url: jdbc:mysql://${SPRING_DATASOURCE_URL}:3306/meikai_db?serverTimezone=UTC&useSSL=false&allowMultiQueries=true&allowPublicKeyRetrieval=true
username: root
password: ${SPRING_DATASOURCE_PASSWORD}
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
map-underscore-to-camel-case: on
type-aliases-package: com.example.setsail.pojo
mapper-locations: classpath:mapper/*.xml
server:
port: 9090
Dockerfile的配置
# 使用官方OpenJDK 17作为基础镜像,最好先拉到本地
FROM openjdk:17
# 设置工作目录
WORKDIR /app
# 将Spring Boot应用的JAR文件复制到容器中,打好的jar包放在同一目录
COPY app.jar /app/app.jar
# 暴露应用的端口
EXPOSE 9090
# 启动Spring Boot应用
ENTRYPOINT ["java", "-jar", "/app/app.jar"]
docker-compose.yml
services:
# Spring Boot 服务
springboot-app:
image: springboot_image:1.0 #已经通过Dockerfile打包好的 Spring Boot 镜像
container_name: springboot-app # 容器名称
ports:
- "9090:9090" # 端口映射
environment:
SPRING_DATASOURCE_URL: mysql-db # 数据库连接 直接写mysql服务名称
# 上面application.yml中使用的环境变量
SPRING_DATASOURCE_PASSWORD: *** # 数据库密码 和下面mysql服务的密码一致
networks:
- my-net
depends_on:
- mysql-db # 依赖 MySQL 服务
# MySQL 服务
mysql-db:
image: mysql:8.0 # MySQL 镜像
container_name: mysql-db # 容器名称
ports:
- "9306:3306" # 端口映射
environment:
MYSQL_ROOT_PASSWORD: *** # MySQL root 密码
MYSQL_DATABASE: my_db # 创建数据库名称
volumes:
- mysql-data:/var/lib/mysql
networks:
- my-net
networks:
my-net:
# 定义卷
volumes:
mysql-data:
driver: local
最后:docker compose up -d就好了