网站首页 > 博客文章 正文
Docker Compose 是一个用于定义和运行多容器 Docker 应用的工具。通过使用 YAML 文件来配置应用的服务,它可以简化复杂应用的管理。本文将详细介绍 Docker Compose 配置文件 docker-compose.yml 的常用语法和配置选项。
一、基本结构
Docker Compose 配置文件使用 YAML 格式,文件名通常为 docker-compose.yml。它包含多个服务定义,每个服务定义了一个容器。
示例docker-compose.yml:
version: '3.8' # 指定 Docker Compose 文件的版本
services: # 服务定义部分
web: # 服务名称
image: nginx:latest # 使用的镜像
ports: # 端口映射
- "80:80"
volumes: # 卷映射
- "./html:/usr/share/nginx/html"
networks: # 连接的网络
- my-network
db:
image: mysql:5.7
environment: # 环境变量
MYSQL_ROOT_PASSWORD: example
volumes:
- "db-data:/var/lib/mysql"
networks:
- my-network
# 网络定义部分
networks:
my-network:
# 卷定义部分
volumes:
db-data:
二、配置选项详解
1.version
指定 Docker Compose 文件的版本,以下为常用版本:
version: '3.8'
2.services
定义整个应用的服务,每个服务代表一个 Docker 容器实例。
示例:
services:
web:
image: nginx:latest
3.image
指定服务使用的 Docker 镜像,可以是 DockerHub 上的公开镜像,也可以是私有的镜像:
image: nginx:latest
4.build
用于构建本地 Docker 镜像,指定 Dockerfile 的路径:
build:
context: ./dir
dockerfile: Dockerfile
或者简写形式:
build: ./dir
5.ports
端口映射,可以将容器内部端口映射到主机端口:
ports:
- "8080:80"
6.volumes
卷映射,可以将主机目录或数据卷挂载到容器内部:
volumes:
- "./html:/usr/share/nginx/html" # 主机目录挂载
- "db-data:/var/lib/mysql" # 数据卷挂载
7.environment
设置环境变量,可以直接在配置文件中定义,也可以从外部文件读取:
environment:
MYSQL_ROOT_PASSWORD: example
或者从文件中读取:
env_file:
- .env
8.networks
定义和使用网络,以实现容器之间的通信:
networks:
- my-network
在 networks 中定义具体的网络:
networks:
my-network:
driver: bridge # 网络类型
9.depends_on
定义服务之间的依赖关系,确保在启动服务时按顺序启动:
depends_on:
- db
10.restart
定义容器的重启策略:
restart: always # 可选值为 no, on-failure, always, unless-stopped
11.command
覆盖容器启动时执行的命令:
command: ["bundle", "exec", "puma", "-C", "config/puma.rb"]
12.entrypoint
覆盖容器的默认执行入口点:
entrypoint: ["./entrypoint.sh"]
13.healthcheck
设置容器的健康检查:
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost"]
interval: 1m30s
timeout: 10s
retries: 3
14.logging
配置容器的日志记录选项:
logging:
driver: "json-file"
options:
max-size: "200k"
max-file: "10"
三、完整示例
以下是一个包含常用配置的完整示例,用于启动一个包含 Nginx 和 MySQL 的简单应用:
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "80:80"
volumes:
- "./html:/usr/share/nginx/html"
networks:
- my-network
depends_on:
- db
restart: always
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: example
volumes:
- "db-data:/var/lib/mysql"
networks:
- my-network
restart: always
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
interval: 1m30s
timeout: 10s
retries: 3
networks:
my-network:
driver: bridge
volumes:
db-data:
四、运行和管理
1. 启动服务
docker-compose up -d
2. 停止服务
docker-compose down
3. 查看日志
docker-compose logs
4. 重启服务
docker-compose restart
5. 查看容器状态
docker-compose ps
五、总结
通过 Docker Compose 可以简化多容器 Docker 应用的配置和管理。它让开发和部署变得更加容易,实现了应用定义即配置的目标。掌握 Docker Compose 的配置方法,将为您带来更高效的容器化应用开发体验。
猜你喜欢
- 2024-09-17 树莓派5安装docker、docker compose、gitlab-ce及配置
- 2024-09-17 11-docker系列-docker之compose安装和相关命令
- 2024-09-17 Docker-compose解析(docker-compose详解)
- 2024-09-17 docker-compose安装(docker-compose安装nginx)
- 2024-09-17 如何在Docker Compose中设置主机名
- 2024-09-17 docker系列:docker-compose用法详解
- 2024-09-17 Docker Compose搭建MySQL主从复制集群
- 2024-09-17 这个开源项目为编写各种Docker-Compose提供了样本
- 2024-09-17 一文掌握 Docker Compose 命令(docker—compose)
- 2024-09-17 通过Docker开源项目Compose实现对 Docker 容器集群的快速编排
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)