docker-compose标签介绍和指南
基础概念
Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。通过 YAML 文件配置应用程序的服务,然后使用单个命令创建并启动所有服务。
核心标签解析
1. version 标签(可省略)
作用:指定 Compose 文件格式版本
规则:
- 必须放在文件开头
- 不同版本支持不同功能
- 常用版本有 "2.4", "3.8" 等
示例:
version: "3.8"
2. services 标签
作用:定义要运行的所有服务容器
规则:
- 每个服务对应一个容器
- 服务名称不能包含下划线(_)
- 可以定义多个服务
示例:
services:
webapp:
image: nginx:latest
database:
image: postgres:13
3. image 标签
作用:指定服务使用的镜像
规则:
- 可以使用 Docker Hub 官方镜像
- 可以指定版本标签(如 :latest, :alpine)
- 如果本地不存在会自动拉取
示例:
services:
redis:
image: redis:6.2-alpine
4. build 标签
作用:通过 Dockerfile 构建镜像
规则:
- 需要指定 context (构建上下文路径)
- 可以指定 Dockerfile 文件名
- 可以使用 args 传递构建参数
示例:
services:
app:
build:
context: .
dockerfile: Dockerfile.dev
args:
NODE_ENV: development
5. ports 标签
作用:映射容器端口到主机端口
规则:
- 格式:主机端口:容器端口
- 可以只指定容器端口(随机分配主机端口)
- 支持指定协议(tcp/udp)
示例:
services:
web:
ports:
- "80:80" # 主机80映射到容器80
- "443:443/tcp" # 指定TCP协议
- "8080" # 随机主机端口
6. volumes 标签
作用:配置数据卷挂载
规则:
-
支持三种格式:
- 主机路径:容器路径
- 命名卷:容器路径
- 仅容器路径(匿名卷)
-
可以设置读写权限(ro/rw)
示例:
services:
db:
volumes:
- /data/mysql:/var/lib/mysql # 主机路径
- db_data:/var/lib/postgresql # 命名卷
- /config # 匿名卷
volumes:
db_data:
7. environment 标签
作用:设置环境变量
规则:
- 可以使用键值对形式
- 可以使用环境变量文件(.env)
- 变量会传递给容器内部
示例:
services:
app:
environment:
- NODE_ENV=production
- DB_HOST=db
env_file:
- .env
8. depends_on 标签
作用:定义服务启动依赖关系
规则:
- 确保依赖服务先启动
- 不等待依赖服务"就绪"
- 可以定义多个依赖服务
示例:
services:
web:
depends_on:
- db
- redis
9. networks 标签
作用:配置容器网络
规则:
- 可以加入自定义网络
- 可以设置IP地址
- 支持网络别名
示例:
services:
app:
networks:
- frontend
- backend
networks:
frontend:
backend:
完整示例
version: "3.8"
services:
web:
image: nginx:alpine
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html
depends_on:
- app
app:
build: .
environment:
- NODE_ENV=production
networks:
- app-network
db:
image: postgres:13
volumes:
- db_data:/var/lib/postgresql/data
environment:
- POSTGRES_PASSWORD=secret
volumes:
db_data:
networks:
app-network:
driver: bridge
使用建议
- 从简单配置开始,逐步添加功能
- 使用有意义的服务名称
- 合理规划网络和数据卷
- 充分利用环境变量配置
- 注意版本兼容性
通过掌握这些核心标签,您已经能够配置大多数常见的多容器应用场景了。
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 春蝉歌醒
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果