开发环境集成
将 Docker 集成到开发工作流中,可以实现环境一致性、快速启动和热重载。
热重载开发
使用卷挂载实现代码热重载,修改代码后自动生效。
Node.js 示例
yaml
# docker-compose.yml
version: '3.8'
services:
app:
build: .
volumes:
- .:/app
- /app/node_modules
ports:
- "3000:3000"
environment:
- NODE_ENV=developmentdockerfile
FROM node:18
WORKDIR /app
COPY package*.json ./
RUN npm install
CMD ["npm", "run", "dev"]Python 示例
yaml
services:
app:
build: .
volumes:
- .:/app
ports:
- "5000:5000"
environment:
- FLASK_ENV=development
command: flask run --host=0.0.0.0 --reload调试容器
进入运行中的容器
sh
docker exec -it <container-id> /bin/bash使用 VS Code 调试
安装 "Dev Containers" 扩展,可以直接在容器内开发和调试。
环境变量管理
使用 .env 文件管理环境变量:
properties
# .env
DATABASE_URL=postgres://user:pass@db:5432/mydb
REDIS_URL=redis://redis:6379在 docker-compose.yml 中引用:
yaml
services:
app:
env_file:
- .env
environment:
- NODE_ENV=${NODE_ENV:-development}开发工具集成
数据库管理
yaml
services:
db:
image: postgres:15
environment:
POSTGRES_PASSWORD: password
ports:
- "5432:5432"
volumes:
- db_data:/var/lib/postgresql/data
adminer:
image: adminer
ports:
- "8080:8080"Redis 缓存
yaml
services:
redis:
image: redis:7-alpine
ports:
- "6379:6379"
volumes:
- redis_data:/data最佳实践
- 使用开发专用 Compose 文件 -
docker-compose.dev.yml - 挂载源代码目录 - 实现热重载
- 使用开发工具镜像 - 包含调试工具
- 配置合理的端口映射 - 避免冲突
提示
开发环境可以使用 docker-compose.dev.yml,生产环境使用 docker-compose.yml,通过 -f 参数指定。