Appearance
Docker Compose
使用 docker compose 轻松 高效管理 docker 容器,定义和运行多个容器。
三步骤
- Define your app’s environment with a
Dockerfile
so it can be reproduced anywhere.- Dockerfile 保证我们的项目在任何地方运行
- Define the services that make up your app in
docker-compose.yml
so they can be run together in an isolated environment.- services 什么是服务?
- docker-compose.yml 怎么写?
- Run
docker compose up
and the Docker compose command starts and runs your entire app. You can alternatively rundocker-compose up
using the docker-compose binary.- docker compose up 启动项目
示例:
yaml
version: '3.9' # optional since v1.27.0
services:
web:
build: .
ports:
- '8000:5000'
volumes:
- .:/code
- logvolume01:/var/log
links:
- redis
redis:
image: redis
volumes:
logvolume01: {}
一个 compose 包含web
和redis
两个容器 ,web 关联到了 redis ,先启动 redis 容器然后启动 web 容器
compose:重要的概念
- services 服务:容器,应用(nginx,redis)
- project 项目:一组关联的容器。博客、web、mysql
安装
撰写先决条件
- Docker Compose 需要 Docker Engine。
- Docker Compose 插件需要 Docker CLI。
安装撰写插件:
- (Mac,Win,Linux) Docker Desktop:如果您安装了 Desktop,那么您已经安装了 Compose 插件。
- Linux 系统:要安装 Docker CLI 的 Compose 插件,请使用以下安装方法之一:
- 使用引擎安装部分中每个 Linux 发行版提供的便利脚本。
- 设置 Docker 的存储库并使用它来安装撰写插件包。
- 其他方案,请检查 Linux 安装。
- Windows Server:如果要直接在 Microsoft Windows Server 上运行 Docker 守护程序和客户端,请按照 Windows Server 安装说明进行操作。
配置文件
完整配置指南 →
https://docs.docker.com/compose/compose-file/compose-file-v3
depends_on
yaml
version: '3.9'
services:
web:
build: .
depends_on:
- db
- redis
redis:
image: redis
db:
image: postgres
表示服务之间的依赖关系。服务依赖关系会导致以下行为:
docker-compose up
按依赖顺序启动服务。在上面的示例中,启动顺序为: db→ redis→ web
搭建 WordPress 博客
https://docs.docker.com/samples/wordpress/
在自定义目录(推荐空目录,避免干扰)中创建
docker-compose.yml
文件输入以下内容并保存(数据库原文为 mysql:5.7,M1 电脑改为 amd64/mysql)
yamlversion: '3.9' services: db: image: amd64/mysql volumes: - db_data:/var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD: somewordpress MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress wordpress: depends_on: - db image: wordpress:latest volumes: - wordpress_data:/var/www/html ports: - '8000:80' restart: always environment: WORDPRESS_DB_HOST: db WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress WORDPRESS_DB_NAME: wordpress volumes: db_data: {} wordpress_data: {}
使用
docker-compose up -d
命令,启动容器组打开浏览器访问博客(跳过了 WordPress 的在线安装注册过程)
检查容器运行状态
bash
❯ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c9e47636a744 wordpress:latest "docker-entrypoint.s…" 6 seconds ago Up 6 seconds 0.0.0.0:8000->80/tcp wp_blog_wordpress_1
1895525741cf amd64/mysql "docker-entrypoint.s…" 7 seconds ago Up 6 seconds 3306/tcp, 33060/tcp wp_blog_db_1