Add blank lines around headers

This commit is contained in:
yeasy
2026-03-24 09:27:04 -07:00
parent 857e3b73f6
commit ae8636e96f
112 changed files with 468 additions and 0 deletions

View File

@@ -30,17 +30,20 @@ $ curl -SL https://github.com/docker/compose/releases/download/v5.1.0/docker-com
```bash
$ chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose
```
### 11.2.2 测试安装
```bash
$ docker compose version
Docker Compose version v5.1.0
```
### 11.2.3 bash 补全命令
```bash
$ curl -L https://raw.githubusercontent.com/docker/compose/v5.1.0/contrib/completion/bash/docker-compose | sudo tee /etc/bash_completion.d/docker-compose > /dev/null
```
### 11.2.4 卸载
如果是二进制包方式安装的删除二进制文件即可

View File

@@ -37,6 +37,7 @@ def hello():
if __name__ == "__main__":
app.run(host="0.0.0.0", debug=True)
```
#### Dockerfile
编写 `Dockerfile` 文件内容为
@@ -48,6 +49,7 @@ WORKDIR /code
RUN pip install redis flask
CMD ["python", "app.py"]
```
#### compose.yaml
编写 `compose.yaml` 文件这是 Compose 推荐使用的主模板文件 (也兼容 `docker-compose.yml` 等历史文件名)
@@ -62,6 +64,7 @@ services:
redis:
image: "redis:alpine"
```
#### 运行 compose 项目
```bash
@@ -77,11 +80,13 @@ $ docker compose up
```bash
$ docker compose up -d
```
#### 停止
```bash
$ docker compose stop
```
#### 进入服务
```bash
@@ -90,31 +95,37 @@ $ docker compose exec redis sh
127.0.0.1:6379> get hits
"9"
```
#### 查看日志
```bash
$ docker compose logs -f
```
#### 构建镜像
```bash
$ docker compose build
```
#### 启动服务
```bash
$ docker compose start
```
#### 运行一次性命令
```bash
$ docker compose run web python app.py
```
#### 验证 Compose 文件
```bash
$ docker compose config
```
#### 删除项目
```bash

View File

@@ -13,6 +13,7 @@ Docker Compose 提供了丰富的命令来管理项目和容器。本节将详
```bash
docker compose [-f=<arg>...] [options] [COMMAND] [ARGS...]
```
### 11.4.2 命令选项
* `-f, --file FILE` 指定使用的 Compose 模板文件默认会自动识别 `compose.yaml` (也兼容 `docker-compose.yml` )并且可以多次指定
@@ -74,6 +75,7 @@ docker compose [-f=<arg>...] [options] [COMMAND] [ARGS...]
```bash
$ docker compose kill -s SIGINT
```
#### `logs`
格式为 `docker compose logs [options] [SERVICE...]`

View File

@@ -52,6 +52,7 @@ build:
- alpine:latest
- corp/web_app:3.14
```
### 11.5.2 `cap_add, cap_drop`
指定容器的内核能力 (capacity) 分配
@@ -68,6 +69,7 @@ cap_add:
cap_drop:
- NET_ADMIN
```
### 11.5.3 `command`
覆盖容器启动后默认执行的命令
@@ -75,6 +77,7 @@ cap_drop:
```yaml
command: echo "hello world"
```
### 11.5.4 `configs`
`configs` 来自 Compose Specification它在 Swarm 中是原生对象在本地 `docker compose` 模式下通常以文件挂载的形式实现具体能力取决于 Compose 版本与运行平台
@@ -88,6 +91,7 @@ command: echo "hello world"
```yaml
cgroup_parent: cgroups_1
```
### 11.5.6 `container_name`
指定容器名称默认将会使用 `项目名称_服务名称_序号` 这样的格式
@@ -109,6 +113,7 @@ container_name: docker-web-container
devices:
- "/dev/ttyUSB1:/dev/ttyUSB0"
```
### 11.5.9 `depends_on`
解决容器的依赖启动先后的问题以下例子中会先启动 `redis` `db` 再启动 `web`
@@ -140,6 +145,7 @@ dns:
- 8.8.8.8
- 114.114.114.114
```
### 11.5.11 `dns_search`
配置 `DNS` 搜索域可以是一个值也可以是一个列表
@@ -151,6 +157,7 @@ dns_search:
- domain1.example.com
- domain2.example.com
```
### 11.5.12 `tmpfs`
挂载一个 tmpfs 文件系统到容器
@@ -161,6 +168,7 @@ tmpfs:
- /run
- /tmp
```
### 11.5.13 `env_file`
从文件中获取环境变量可以为单独的文件路径或列表
@@ -184,6 +192,7 @@ env_file:
PROG_ENV=development
```
### 11.5.14 `environment`
设置环境变量你可以使用数组或字典两种格式
@@ -204,6 +213,7 @@ environment:
```bash
y|Y|yes|Yes|YES|n|N|no|No|NO|true|True|TRUE|false|False|FALSE|on|On|ON|off|Off|OFF
```
### 11.5.15 `expose`
暴露端口但不映射到宿主机只被连接的服务访问
@@ -215,6 +225,7 @@ expose:
- "3000"
- "8000"
```
### 11.5.16 `external_links`
> 注意不建议使用该指令
@@ -227,6 +238,7 @@ external_links:
- project_db_1:mysql
- project_db_1:postgresql
```
### 11.5.17 `extra_hosts`
类似 Docker 中的 `--add-host` 参数指定额外的 host 名称映射信息
@@ -242,6 +254,7 @@ extra_hosts:
8.8.8.8 googledns
52.1.157.61 dockerhub
```
### 11.5.18 `healthcheck`
通过命令检查容器是否健康运行
@@ -253,6 +266,7 @@ healthcheck:
timeout: 10s
retries: 3
```
### 11.5.19 `image`
指定为镜像名称或镜像 ID如果镜像在本地不存在`Compose` 将会尝试拉取这个镜像
@@ -262,6 +276,7 @@ image: ubuntu
image: orchardup/postgresql
image: a4bc65fd
```
### 11.5.20 `labels`
为容器添加 Docker 元数据 (metadata) 信息例如可以为容器添加辅助说明信息
@@ -272,6 +287,7 @@ labels:
com.startupteam.department: "devops department"
com.startupteam.release: "rc3 for v1.0"
```
### 11.5.21 `links`
> 注意不推荐使用该指令容器之间应通过 Docker 网络 (networks) 进行互联
@@ -300,6 +316,7 @@ options:
max-size: "200k"
max-file: "10"
```
### 11.5.23 `network_mode`
设置网络模式使用和 `docker run` `--network` 参数一样的值
@@ -311,6 +328,7 @@ network_mode: "none"
network_mode: "service:[service name]"
network_mode: "container:[container name/id]"
```
### 11.5.24 `networks`
配置容器连接的网络
@@ -327,6 +345,7 @@ networks:
some-network:
other-network:
```
### 11.5.25 `pid`
跟主机系统共享进程命名空间打开该选项的容器之间以及容器和宿主机系统之间可以通过进程 ID 来相互访问和操作
@@ -334,6 +353,7 @@ networks:
```yaml
pid: "host"
```
### 11.5.26 `ports`
暴露端口信息
@@ -370,6 +390,7 @@ secrets:
my_other_secret:
external: true
```
### 11.5.28 `security_opt`
指定容器模板标签 (label) 机制的默认属性 (用户角色类型级别等)例如配置标签的用户名和角色名
@@ -379,6 +400,7 @@ security_opt:
- label:user:USER
- label:role:ROLE
```
### 11.5.29 `stop_signal`
设置另一个信号来停止容器在默认情况下使用的是 SIGTERM 停止容器
@@ -386,6 +408,7 @@ security_opt:
```yaml
stop_signal: SIGUSR1
```
### 11.5.30 `sysctls`
配置容器内核参数
@@ -399,6 +422,7 @@ sysctls:
- net.core.somaxconn=1024
- net.ipv4.tcp_syncookies=0
```
### 11.5.31 `ulimits`
指定容器的 ulimits 限制值
@@ -412,6 +436,7 @@ sysctls:
soft: 20000
hard: 40000
```
### 11.5.32 `volumes`
数据卷所挂载路径设置可以设置为宿主机路径 (`HOST:CONTAINER`) 或者数据卷名称 (`VOLUME:CONTAINER`)并且可以设置访问模式 (`HOST:CONTAINER:ro`)
@@ -436,6 +461,7 @@ services:
volumes:
mysql_data:
```
### 11.5.33 其它指令
此外还有包括 `domainname, entrypoint, hostname, ipc, mac_address, privileged, read_only, shm_size, restart, stdin_open, tty, user, working_dir` 等指令基本跟 `docker run` 中对应参数的功能一致
@@ -487,6 +513,7 @@ stdin_open: true
```yaml
tty: true
```
### 11.5.34 读取变量
Compose 模板文件支持动态读取主机的系统环境变量和当前目录下的 `.env` 文件中的变量

View File

@@ -298,6 +298,7 @@ $ docker compose exec db psql -U django_user -d django_db
$ docker compose ps
$ docker compose logs db
```
#### Q2代码修改没有生效
**可能原因**
@@ -313,6 +314,7 @@ $ docker compose logs db
$ sudo chown -R $USER:$USER .
```
### 11.6.11 开发 vs 生产关键差异
笔者特别提醒本节的配置是 **开发环境** 配置生产环境需要以下调整
@@ -340,6 +342,7 @@ services:
# ...
```
### 11.6.12 延伸阅读
- [Compose 模板文件详解](11.5_compose_file.md)深入理解 Compose 文件的所有配置项

View File

@@ -88,6 +88,7 @@ gem 'rails', '~> 7.1'
```bash
$ touch Gemfile.lock
```
### 11.7.5 步骤 3创建 compose.yaml
配置如下
@@ -157,6 +158,7 @@ compose.yaml bin db public
```bash
$ docker compose build
```
### 11.7.8 步骤 6配置数据库连接
修改 `config/database.yml`
@@ -196,6 +198,7 @@ web-1 | => Run `bin/rails server --help` for more startup options
web-1 | Puma starting in single mode...
web-1 | * Listening on http://0.0.0.0:3000
```
### 11.7.10 步骤 8创建数据库
在另一个终端执行
@@ -230,6 +233,7 @@ $ docker compose exec web rails generate scaffold Post title:string body:text
$ docker compose exec web bash
```
### 11.7.12 常见问题
#### Q数据库连接失败
@@ -240,6 +244,7 @@ $ docker compose exec web bash
$ docker compose ps
$ docker compose logs db
```
#### Qserver.pid 文件导致启动失败
错误信息`A server is already running`
@@ -249,6 +254,7 @@ $ docker compose logs db
```bash
$ docker compose exec web rm -f tmp/pids/server.pid
```
#### QGem 安装失败
可能需要更新 bundler 或清理缓存
@@ -256,6 +262,7 @@ $ docker compose exec web rm -f tmp/pids/server.pid
```bash
$ docker compose run --rm web bundle update
```
### 11.7.13 开发 vs 生产
| 配置项 | 开发环境 | 生产环境 |

View File

@@ -154,6 +154,7 @@ $ docker exec wordpress_db mysqldump -u wordpress -pwordpress wordpress > backup
networks:
- wp_net
```
#### 2. 使用 Nginx 反向代理
在生产环境中不要直接暴露 WordPress 端口而是通过 Nginx 进行反向代理并配置 SSL