用于定义和运行多容器 Docker 应用程序。通过 Compose,用户可以使用 YAML 文件来配置应用程序的服务、网络和卷等资源
简化多容器的管理和部署过程
以下compose.yaml示例展示如何部署两个服务WordPress 和 MySQL的环境
version: '3.8' # 指定 Docker Compose 文件的版本
services: # 定义服务
mysql: # MySQL 服务配置
container_name: mysql_db # 容器的名称
image: mysql:8.0 # 使用的 Docker 镜像及其版本
ports: # 映射端口
- "3306:3306" # 将主机的 3306 端口映射到容器的 3306 端口
environment: # 设置环境变量
MYSQL_ROOT_PASSWORD: 123456 # MySQL 根用户的密码
MYSQL_DATABASE: wordpress # 创建的默认数据库名称
volumes: # 数据卷配置
- mysql-data:/var/lib/mysql # 将 MySQL 数据存储在名为 mysql-data 的卷中
- ./myconf:/etc/mysql/conf.d # 将本地配置文件目录挂载到容器中
restart: always # 容器崩溃时自动重启
networks: # 指定网络
- blog_network # 使用名为 blog_network 的网络
wordpress: # WordPress 服务配置
image: wordpress # 使用的 Docker 镜像(WordPress)
ports: # 映射端口
- "8080:80" # 将主机的 8080 端口映射到容器的 80(HTTP)端口
environment: # 设置环境变量
WORDPRESS_DB_HOST: mysql_db # MySQL 数据库主机名(与 MySQL 服务名称相同)
WORDPRESS_DB_USER: root # 用于连接数据库的用户名
WORDPRESS_DB_PASSWORD: 123456 # 用于连接数据库的用户密码
WORDPRESS_DB_NAME: wordpress # WordPress 使用的数据库名称
volumes: # 数据卷配置
- wordpress_data:/var/www/html # 将 WordPress 数据存储在名为 wordpress_data 的卷中
restart: always # 容器崩溃时自动重启
networks: # 指定网络
- blog_network # 使用名为 blog_network 的网络
depends_on: # 定义依赖关系
- mysql # 确保 MySQL 服务在 WordPress 启动之前运行
volumes: # 定义数据卷
mysql-data: # MySQL 数据存储卷
wordpress_data: # WordPress 数据存储卷
networks: # 定义网络
blog_network: # 自定义网络,用于连接服务之间的通信
参数描述:
- version:指定 Docker Compose 文件使用的版本,确保兼容性。
- services:定义应用中的各个服务。
- container_name:自定义容器名称,便于管理和识别。
- image:指定要使用的 Docker 镜像及其版本。
- ports:映射主机和容器之间的端口,使外部可以访问服务。
- environment:设置环境变量,供容器内应用使用。
- volumes:定义数据卷,用于持久化数据存储和配置文件。
- restart:设置容器重启策略,以提高应用稳定性。
- networks:定义服务之间的网络,使它们能够相互通信。
- depends_on:指定服务启动顺序,确保依赖服务先启动。
命令
准备好 docker-compose.yaml
文件后,就可以通过以下命令轻松启动、停止和管理应用:
启动应用
默认情况会去启动compose.yaml
docker compose up
如果要指定yaml名称和启动多个可以用 -f
docker compose -d -f compose.yaml -f sqlcom.yaml up
停止应用
默认都是compose.yaml
docker compose stop
停止并清除所有服务
docker compose down
重启服务
docker compose restart
- -d:在后台运行容器,不阻塞终端。
- -f <filename>:指定要使用的 Docker Compose 文件,可以多个文件一起使用,以便覆盖或扩展配置。
- up:启动和创建服务,必要时更新已有容器。
- stop:停止正在运行的服务,但不删除容器,可以随时重启。
- down:停止并删除服务及其相关资源,适合清理环境。
- restart:重启当前运行的服务,快速应用更改。