fix(content): harden Docker practice guide

This commit is contained in:
yeasy
2026-06-16 21:23:21 -07:00
parent f4e684afeb
commit 9fdffa9d91
67 changed files with 343 additions and 278 deletions
+23 -4
View File
@@ -1,17 +1,32 @@
## 11.2 安装与卸载
`Compose` Docker 官方的开源项目负责实现 Docker 容器集群的快速编排
`Compose` Docker 官方的开源项目负责实现本地或单机多容器应用的快速编排跨主机集群编排应使用 SwarmKubernetes 或云厂商托管服务
当前的 Compose `docker compose` 子命令的形式提供Docker Desktop macOSWindows Linux 上默认包含它如果你已经在 Linux 上单独安装了 Docker Engine Docker CLI也可以再安装 Compose CLI 插件
### 11.2.1 Linux
Linux 你可以通过 Docker 官方发布页安装 Compose CLI 插件把二进制文件保存到 `$DOCKER_CONFIG/cli-plugins/docker-compose`并赋予执行权限即可
Linux 默认建议通过 Docker 官方软件仓库安装 Compose CLI 插件这样可以随系统包管理器更新
Ubuntu / Debian
```bash
$ sudo apt-get update
$ sudo apt-get install docker-compose-plugin
```
Fedora / CentOS / RHEL 兼容发行版
```bash
$ sudo dnf install docker-compose-plugin
```
如果是离线环境需要锁定特定版本或包管理器暂不覆盖你的架构可以从 Docker 官方发布页手工安装手工安装不会自动更新下载 URL 中的版本号和架构 `x86_64``aarch64`需要按目标机器替换
```bash
$ DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
$ mkdir -p $DOCKER_CONFIG/cli-plugins
$ curl -SL https://github.com/docker/compose/releases/latest/download/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose
$ curl -SL https://github.com/docker/compose/releases/download/v5.1.2/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose
$ chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose
```
@@ -24,8 +39,12 @@ Docker Compose version v5.x.x
### 11.2.3 卸载
如果是二进制包方式安装删除二进制文件即可
如果是仓库方式安装使用包管理器卸载如果是二进制包方式安装删除二进制文件即可
```bash
$ sudo apt-get remove docker-compose-plugin
# 或
$ sudo dnf remove docker-compose-plugin
$ rm $DOCKER_CONFIG/cli-plugins/docker-compose
```
+2 -2
View File
@@ -228,7 +228,7 @@ $ docker compose run --no-deps web python manage.py shell
#### `scale`
当前 Compose CLI 更稳妥的扩缩容写法是通过 `docker compose up --scale` 完成
当前 Compose CLI 仍支持 `docker compose scale`实际使用中更常见也更便于和创建/重建流程放在一起的写法是通过 `docker compose up --scale` 完成
例如
@@ -238,7 +238,7 @@ $ docker compose up -d --scale web=3 --scale db=2
将启动 3 个容器运行 `web` 服务2 个容器运行 `db` 服务
> **说明**有些旧环境或实验性入口中仍可能出现 `docker compose scale`但它不应再被视为当前 Compose 的通用稳定默认命令
> **说明**如果 Compose 文件为服务指定了 `container_name`该服务无法扩展到多个容器需要扩缩容的服务应使用 Compose 自动生成的容器名并通过服务名做 DNS 访问
一般的当指定数目多于该服务当前实际运行容器将新创建并启动容器反之将停止容器
+8
View File
@@ -582,6 +582,14 @@ $ docker compose --profile debug up # 启动 web + debug
$ docker compose up # 仅启动 web
```
也可以通过环境变量激活
```bash
$ COMPOSE_PROFILES=debug,test docker compose up
```
如果在命令行里显式指定某个带 profile 的服务Compose 会自动启动这个目标服务及其声明的依赖但不会自动启动同一 profile 下的其它服务除非也显式指定或通过 `--profile` / `COMPOSE_PROFILES` 启用
### 11.5.35 读取变量
Compose 模板文件支持动态读取主机的系统环境变量和当前目录下的 `.env` 文件中的变量
+1 -1
View File
@@ -4,7 +4,7 @@
> - MySQL8.4可替换为其他 8.x 版本或使用 MariaDB 替代
> - WordPresslatest建议在生产环境指定具体版本 6.x
WordPress 是全球最流行的内容管理系统 (CMS)使用 Docker Compose 可以在几分钟内搭建一个包含数据库Web 服务和持久化存储的生产级 WordPress 环境
WordPress 是全球最流行的内容管理系统 (CMS)使用 Docker Compose 可以在几分钟内搭建一个包含数据库Web 服务和持久化存储的本地练习/单机演示环境
---
+1 -1
View File
@@ -1,6 +1,6 @@
# 第十一章 Docker Compose
`Docker Compose` Docker 官方编排 (Orchestration) 项目之一负责快速的部署分布式应用
`Docker Compose` Docker 官方编排 (Orchestration) 项目之一负责快速定义和启动本地或单机多容器应用跨主机集群编排应交给 SwarmKubernetes 或云厂商托管服务
> **重要提示Compose V1 已停止支持**
>
+17 -1
View File
@@ -2,9 +2,18 @@
services:
db:
image: postgres
image: postgres:16
environment:
POSTGRES_DB: django_db
POSTGRES_USER: django_user
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?set POSTGRES_PASSWORD}
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U django_user -d django_db"]
interval: 5s
timeout: 5s
retries: 5
web:
build: .
@@ -13,6 +22,13 @@ services:
- .:/code
ports:
- "8000:8000"
depends_on:
db:
condition: service_healthy
environment:
# 与书中 11.6 节一致settings.py 从环境变量读取数据库密码
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?set POSTGRES_PASSWORD}
DATABASE_URL: postgres://django_user:${POSTGRES_PASSWORD:?set POSTGRES_PASSWORD}@db:5432/django_db
volumes:
postgres_data:
+1 -1
View File
@@ -24,7 +24,7 @@ services:
- db
image: wordpress:latest
ports:
- "8000:80"
- "127.0.0.1:8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306