docker-compose 部署一个springboot+mysql的项目
1: 准备Spring Boot应用
确保应用能够正常运行,并打成jar包
2: 创建Dockerfile
# 使用官方Spring Boot作为父镜像
FROM openjdk:8
# 将jar包添加到容器中并更名为app.jar
# JAR_FILE变量的路径与你的jar包实际位置相匹配。
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
# 容器启动时运行jar包
ENTRYPOINT ["java","-jar","/app.jar"]
# 暴露端口
EXPOSE 8080
3: 创建docker-compose.yml
version: '3.8'
services:
db:
image: mysql:8.0
container_name: mysql-db
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: yourdatabase
MYSQL_USER: user
MYSQL_PASSWORD: password
volumes:
- db-data:/var/lib/mysql
# 容器的初始化过程中执行一个SQL脚本,假设你的SQL文件在当前目录下的init文件夹中
- ./init:/docker-entrypoint-initdb.d/
ports:
- "3306:3306"
app:
build:
context: .
dockerfile: Dockerfile
image: your-spring-boot-app
container_name: spring-boot-app
ports:
- "8080:8080"
depends_on:
- db
environment:
SPRING_DATASOURCE_URL: jdbc:mysql://mysql-db:3306/yourdatabase?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC
SPRING_DATASOURCE_USERNAME: user
SPRING_DATASOURCE_PASSWORD: password
volumes:
- app-data:/app/data
- ./logs:/app/logs
volumes:
db-data:
app-data:
logs:
4: 构建和运行
# 构建
docker-compose build
# 不使用缓存构建
docker-compose build --no-cache
# 启动服务
docker-compose up
# 后台启动
docker-compose up -d
# 停止
docker-compose stop
# 重新启动
docker-compose restart
# 查看所有docker-compose 构建的服务
docker-compose ps -a
# 查看日志
docker-compose logs
# 或者查看特定服务的日志
docker-compose logs <服务名称>