使用 Docker Compose 编排本地容器
Docker Compose 是一个用于定义和运行多容器 Docker 应用的工具。通过 docker-compose.yml
文件,你可以轻松地将多个本地容器组合成一个完整的应用。
以下是使用 Docker Compose 编排本地容器的详细步骤:
- 创建 docker-compose.yml 文件
在项目根目录下创建docker-compose.yml
文件,定义所有服务及其配置:
version: '3'
services:
web:
build: . # 使用当前目录的 Dockerfile 构建镜像
ports:
- "8080:80" # 映射主机端口 8080 到容器端口 80
depends_on:
- db # 依赖于数据库服务
environment:
- DB_CONNECTION_STRING=server=db;database=myapp;user=sa;password=YourStrongPassword
db:
image: mcr.microsoft.com/mssql/server:2019-latest # 使用官方 SQL Server 镜像
environment:
- SA_PASSWORD=YourStrongPassword
- ACCEPT_EULA=Y
volumes:
- mssql-data:/var/opt/mssql # 挂载数据卷保存数据库文件
volumes:
mssql-data: # 定义命名卷
- 构建和启动容器
在项目目录下执行以下命令构建并启动所有服务:
docker-compose up -d
-d
参数表示在后台运行容器- 首次运行会自动构建或拉取所需镜像
- 常用命令
# 查看容器状态
docker-compose ps
# 查看服务日志
docker-compose logs -f web
# 停止并删除容器
docker-compose down
# 仅重启特定服务
docker-compose restart web
# 构建并重新创建服务容器
docker-compose up -d --build
高级配置技巧
- 使用 .env 文件
在项目根目录创建.env
文件,存储环境变量:
DB_PASSWORD=YourStrongPassword
APP_PORT=8080
在 docker-compose.yml
中引用这些变量:
version: '3'
services:
web:
ports:
- "${APP_PORT}:80"
db:
environment:
- SA_PASSWORD=${DB_PASSWORD}
- 多环境配置
创建docker-compose.prod.yml
用于生产环境:
version: '3'
services:
web:
image: myregistry/web:${VERSION} # 使用预构建镜像而非本地构建
ports:
- "80:80"
db:
volumes:
- /data/mssql:/var/opt/mssql # 使用主机路径挂载
使用 -f
参数指定配置文件:
docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d
- 网络配置
默认情况下,Docker Compose 会创建一个专用网络,所有服务都可以通过服务名互相访问(例如web
服务可以通过db
访问数据库)。
services:
web:
networks:
- my-network
db:
networks:
- my-network
networks:
my-network:
通过这些配置,你可以高效地使用 Docker Compose 管理本地开发环境中的多个容器。