Docker Compose 常用配置与命令速查清单
·
Docker Compose 常用配置与命令速查清单
以下是面向 Java 开发工程师 的 Docker Compose 常用配置与命令速查清单,涵盖基础结构、典型 Java 应用场景(如 Spring Boot + MySQL + Redis)、常用命令及最佳实践。
📁 一、Docker Compose 是什么?
Docker Compose 是一个用于定义和运行多容器 Docker 应用的工具。通过一个 docker-compose.yml 文件,你可以一键启动/停止整个应用栈(如 Web 服务 + 数据库 + 缓存)。
🛠️ 二、基础 docker-compose.yml 结构
version: '3.8'
services:
app: # 服务名(可自定义)
build: . # 构建上下文(或使用 image: myapp:1.0)
ports:
- "8080:8080" # 主机端口:容器端口
environment:
- SPRING_PROFILES_ACTIVE=prod
- DB_HOST=mysql
depends_on:
- mysql
- redis
volumes:
- ./logs:/app/logs # 挂载日志目录(开发调试用)
mysql:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: root123
MYSQL_DATABASE: mydb
ports:
- "3306:3306"
volumes:
- mysql_data:/var/lib/mysql # 使用命名卷持久化数据
redis:
image: redis:7-alpine
ports:
- "6379:6379"
volumes:
mysql_data: # 声明命名卷
💡 关键点说明:
depends_on:确保依赖服务先启动(但不等待服务“就绪”,需配合健康检查)。environment:传递环境变量给 Java 应用(Spring Boot 会自动读取)。volumes:避免容器重启后数据丢失(数据库、日志等)。
🧪 三、Java 典型场景示例:Spring Boot + MySQL + Redis
目录结构建议:
my-spring-app/
├── src/
├── pom.xml
├── Dockerfile
└── docker-compose.yml
Dockerfile(参考前面内容):
FROM eclipse-temurin:17-jre-alpine
COPY target/app.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]
application.yml(Spring Boot 配置):
spring:
datasource:
url: jdbc:mysql://mysql:3306/mydb?useSSL=false&serverTimezone=UTC
username: root
password: root123
redis:
host: redis
port: 6379
✅ 注意:在 Compose 网络中,服务名(如
mysql、redis)可直接作为主机名使用!
🚀 四、Docker Compose 常用命令
| 命令 | 说明 |
|---|---|
docker-compose up | 启动所有服务(前台运行,Ctrl+C 停止) |
docker-compose up -d | 后台启动(推荐生产/开发使用) |
docker-compose down | 停止并删除容器、网络(不会删除卷) |
docker-compose down -v | 停止并删除容器、网络 和卷(慎用!会丢数据) |
docker-compose logs -f app | 实时查看 app 服务日志 |
docker-compose ps | 查看当前项目中所有容器状态 |
docker-compose build | 重新构建镜像(当 Dockerfile 或代码变更后) |
docker-compose restart app | 重启某个服务 |
docker-compose exec app /bin/sh | 进入 app 容器调试 |
💡 默认 Compose 项目名是目录名,可通过
-p myproject指定。
🔒 五、进阶技巧(Java 开发者推荐)
1. 使用 .env 文件管理环境变量
# .env
DB_PASSWORD=root123
REDIS_PORT=6379
# docker-compose.yml
services:
app:
environment:
- DB_PASSWORD=${DB_PASSWORD}
2. 健康检查(Healthcheck)
确保 Spring Boot 应用真正“就绪”后再被依赖:
services:
app:
image: myapp:1.0
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080/actuator/health"]
interval: 30s
timeout: 10s
retries: 3
⚠️ 需在 Spring Boot 中启用 Actuator:
management.endpoints.web.exposure.include=health
3. 多环境配置(dev / prod)
docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d
🧹 六、清理与调试
-
查看所有 Compose 项目:
docker-compose ls -
强制重建并启动(代码更新后):
docker-compose up -d --build -
仅启动部分服务(如只启数据库):
docker-compose up -d mysql redis
✅ 最佳实践总结
| 场景 | 建议 |
|---|---|
| 开发阶段 | 挂载本地 JAR 或源码目录,实现热部署(结合 Spring DevTools) |
| 生产部署 | 使用预构建镜像,避免在 Compose 中 build;启用健康检查 |
| 敏感信息 | 使用 secrets 或外部配置中心,避免明文写密码 |
| 网络隔离 | Compose 自动创建专属 bridge 网络,服务间通过服务名通信 |
更多推荐

所有评论(0)