目录
[Docker Compose 简介](#Docker Compose 简介)
[Docker Compose 常用命令](#Docker Compose 常用命令)
[使用 Docker Compose 启动 WordPress](#使用 Docker Compose 启动 WordPress)
[普通启动方式(使用 Docker 命令)](#普通启动方式(使用 Docker 命令))
[使用 Docker Compose 启动](#使用 Docker Compose 启动)
[Docker Compose 的特性](#Docker Compose 的特性)
Docker Compose 简介
Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。它通过 YAML 文件配置应用程序的服务、网络和卷,从而可以轻松地启动、停止和管理多个容器。

Docker Compose 常用命令
Docker Compose 提供了许多命令来管理多容器应用程序,以下是一些常用命令及其用法:
docker compose up -d
:启动服务,-d
表示后台运行。docker compose down
:停止并删除服务,-v
可选参数用于删除卷。docker compose ps
:列出正在运行的服务。docker compose logs
:查看服务日志,-f
实时跟踪。docker compose build
:构建服务镜像,--no-cache
禁用缓存。docker compose exec
:在运行的容器中执行命令。docker compose restart
:重启服务。docker compose stop
:停止服务。docker compose start
:启动已停止的服务。docker compose pull
:拉取服务的镜像。docker compose config
:验证并查看配置文件。docker compose run
:运行一次性命令,--rm
完成后删除容器。
使用 Docker Compose 启动 WordPress
WordPress 是一个功能强大且广泛使用的开源内容管理系统(CMS),基于 PHP 和 MySQL 构建。它允许用户通过简单的安装和配置,快速搭建个人博客、企业网站、新闻门户等多种类型的网站。WordPress 提供了丰富的主题和插件生态系统,用户可以根据自己的需求轻松定制网站的外观和功能。
普通启动方式(使用 Docker 命令)
创建网络:
docker network create blog
启动 MySQL 容器:
docker run -d -p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=shiguang \
-e MYSQL_DATABASE=wordpress \
-v mysql-data:/var/lib/mysql \
-v /home/mysql/config:/etc/mysql/conf.d \
--restart always --name mysql \
--network blog \
mysql:8.0
启动 WordPress 容器:
docker run -d -p 8080:80 \
-e WORDPRESS_DB_HOST=mysql \
-e WORDPRESS_DB_USER=root \
-e WORDPRESS_DB_PASSWORD=shiguang \
-e WORDPRESS_DB_NAME=wordpress \
-v wordpress:/var/www/html \
--restart always --name wordpress-app \
--network blog \
wordpress:latest
使用 Docker Compose 启动

|------------------|----------------------------------------|
| version
| 指定 Docker Compose 文件版本(如 3.8
)。 |
| services
| 定义服务(容器)的集合。 |
| image
| 指定服务使用的 Docker 镜像。 |
| container_name
| 设置服务的容器名称。 |
| ports
| 映射容器端口到宿主机端口(如 8080:80
)。 |
| environment
| 设置服务的环境变量(如 MYSQL_ROOT_PASSWORD
)。 |
| volumes
| 挂载卷到容器(如 mysql-data:/var/lib/mysql
)。 |
| restart
| 设置容器的重启策略(如 always
、on-failure
)。 |
| depends_on
| 定义服务依赖关系(如 depends_on: [mysql]
)。 |
| networks
| 定义服务所属的网络。 |
编写 docker-compose.yml
文件:
# 服务名称
name: myblog
# 服务
services:
mysql:
# 容器名称
container_name: mysql
# 镜像
image: mysql:8.0
# 端口
ports:
- "3306:3306"
# 环境变量
environment:
- MYSQL_ROOT_PASSWORD=shiguang
- MYSQL_DATABASE=wordpress
# 挂载
volumes:
- mysql-data:/var/lib/mysql
- /opt/docker/mysql/config:/etc/mysql/conf.d
# 重启策略
restart: always
# 网络
networks:
- blog
wordpress:
# 镜像
image: wordpress
# 端口
ports:
- "8080:80"
# 环境变量
environment:
WORDPRESS_DB_HOST: mysql
WORDPRESS_DB_USER: root
WORDPRESS_DB_PASSWORD: shiguang
WORDPRESS_DB_NAME: wordpress
# 挂载
volumes:
- wordpress:/var/www/html
# 重启策略
restart: always
# 网络
networks:
- blog
# 依赖
depends_on:
- mysql
volumes:
# 挂载
mysql-data:
wordpress:
networks:
# 网络
blog:
启动服务:
切换到 docker-compose.yml
文件所在目录。
执行命令:docker compose up -d
指定文件名启动:
如果文件名不是默认的 docker-compose.yml
,可以使用 -f
指定文件名:
docker compose -f compose.yml up -d
Docker Compose 的特性
增量更新:
修改 docker-compose.yml
文件后重新启动应用,只会触发修改项的重新启动。
数据安全:
默认情况下,即使使用 docker-compose down
停止容器,所有挂载的卷也不会被移除。
如果需要删除容器的同时删除所有卷,可以使用以下命令:
docker compose down --rmi all -v
通过 Docker Compose,可以更高效地管理多容器应用程序,简化开发和部署流程。