一个完整的 Maven 打包 → docker build → docker compose up -d 的案例流程
一个完整的 Maven 打包 → docker build → docker compose up -d 的案例流程。
我们假设项目是一个 Spring Boot Web 项目,依赖 MySQL。
🔹 1. 使用 Maven 打包
在项目根目录执行:
mvn clean install -DskipTests
执行完成后,你会得到一个 jar 包,例如:
target/demo-0.0.1-SNAPSHOT.jar
🔹 2. 编写 Dockerfile
在项目根目录新建 Dockerfile:
基础镜像
FROM openjdk:17-jdk-slim
设置工作目录
WORKDIR /app
复制 jar 包
COPY target/demo-0.0.1-SNAPSHOT.jar app.jar
暴露端口
EXPOSE 8080
启动命令
ENTRYPOINT [“java”, “-jar”, “app.jar”]
🔹 3. 使用 docker build 构建镜像
手动执行构建命令:
docker build -t demo-app:1.0 .
构建成功后,可以看到镜像:
docker images
输出类似:
REPOSITORY TAG IMAGE ID CREATED SIZE
demo-app 1.0 abcd1234efgh 30 seconds ago 250MB
🔹 4. 编写 docker-compose.yml
在项目根目录创建 docker-compose.yml:
version: “3.9”
services:
app:
image: demo-app:1.0 # 使用我们上一步构建好的镜像
container_name: demo-app
ports:
- “8080:8080”
environment:
SPRING_DATASOURCE_URL: jdbc:mysql://db:3306/demo?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC
SPRING_DATASOURCE_USERNAME: root
SPRING_DATASOURCE_PASSWORD: root
depends_on:
- db
db:
image: mysql:8.0
container_name: demo-mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: demo
ports:
- “3306:3306”
volumes:
- db_data:/var/lib/mysql
volumes:
db_data:
🔹 5. 启动项目
运行:
docker compose up -d
这一步会:
启动 MySQL 容器
启动我们手动 build 出来的 demo-app:1.0 镜像容器
🔹 6. 验证
查看容器运行状态:
docker ps
访问:
http://localhost:8080
👉 这样完整流程就是:
Maven 构建 → Docker build → Docker Compose 部署
如果要加入redis
扩展成 Spring Boot + MySQL + Redis,这样就比较贴近实际生产环境了。
🔹 1. 目录结构
.
├── Dockerfile
├── docker-compose.yml
├── pom.xml
└── target/demo-0.0.1-SNAPSHOT.jar
🔹 2. Dockerfile
还是和之前一样:
FROM openjdk:17-jdk-slim
WORKDIR /app
COPY target/demo-0.0.1-SNAPSHOT.jar app.jar
EXPOSE 8080
ENTRYPOINT [“java”, “-jar”, “app.jar”]
🔹 3. docker-compose.yml
扩展支持 Redis:
version: “3.9”
services:
app:
image: demo-app:1.0
container_name: demo-app
ports:
- “8080:8080”
environment:
SPRING_DATASOURCE_URL: jdbc:mysql://db:3306/demo?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC
SPRING_DATASOURCE_USERNAME: root
SPRING_DATASOURCE_PASSWORD: root
SPRING_REDIS_HOST: redis
SPRING_REDIS_PORT: 6379
depends_on:
- db
- redis
db:
image: mysql:8.0
container_name: demo-mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: demo
ports:
- “3306:3306”
volumes:
- db_data:/var/lib/mysql
redis:
image: redis:7.0
container_name: demo-redis
restart: always
ports:
- “6379:6379”
volumes:
- redis_data:/data
volumes:
db_data:
redis_data:
🔹 4. 构建 & 运行
Step 1: 用 Maven 打包
mvn clean install -DskipTests
Step 2: 构建镜像
docker build -t demo-app:1.0 .
Step 3: 启动服务
docker compose up -d
🔹 5. 验证
查看容器状态:
docker ps
你应该能看到:
demo-app (Spring Boot 应用)
demo-mysql (MySQL 数据库)
demo-redis (Redis 缓存)
这样,你的 Spring Boot 应用在 application.yml 或 application.properties 里配置好 Redis 和 MySQL,就能直接使用了。
更多推荐


所有评论(0)