Fix and improve

This commit is contained in:
Baohua Yang
2026-02-12 16:51:50 -08:00
parent bae82e993a
commit 0835f8467a
100 changed files with 280 additions and 622 deletions

View File

@@ -2,11 +2,9 @@
模板文件是使用 `Compose` 的核心涉及到的指令关键字也比较多但大家不用担心这里面大部分指令跟 `docker run` 相关参数的含义都是类似的
默认的模板文件名称为 `docker-compose.yml`格式为 YAML 格式
默认的模板文件名称为 `compose.yaml`也兼容 `docker-compose.yml` 等历史文件名格式为 YAML
```yaml
services:
webapp:
image: examples/web
@@ -18,18 +16,16 @@ services:
注意每个服务都必须通过 `image` 指令指定镜像或 `build` 指令需要 Dockerfile等来自动构建生成镜像
如果使用 `build` 指令 `Dockerfile` 中设置的选项(例如`CMD`, `EXPOSE`, `VOLUME`, `ENV` ) 将会自动被获取无需在 `docker-compose.yml` 中重复设置
如果使用 `build` 指令 `Dockerfile` 中设置的选项例如`CMD``EXPOSE``VOLUME``ENV` 将会自动被获取无需在 Compose 文件中重复设置
下面分别介绍各个指令的用法
### `build`
指定 `Dockerfile` 所在文件夹的路径可以是绝对路径或者相对 docker-compose.yml 文件的路径 `Compose` 将会利用它自动构建这个镜像然后使用这个镜像
指定 `Dockerfile` 所在文件夹的路径可以是绝对路径或者相对 Compose 文件的路径`Compose` 将会利用它自动构建这个镜像然后使用这个镜像
```yaml
services:
webapp:
build: ./dir
```
@@ -41,9 +37,7 @@ services:
使用 `arg` 指令指定构建镜像时的变量
```yaml
services:
webapp:
build:
context: ./dir
@@ -130,8 +124,6 @@ devices:
解决容器的依赖启动先后的问题以下例子中会先启动 `redis` `db` 再启动 `web`
```yaml
services:
web:
build: .
@@ -187,7 +179,7 @@ tmpfs:
从文件中获取环境变量可以为单独的文件路径或列表
如果通过 `docker-compose -f FILE` 方式来指定 Compose 模板文件 `env_file` 中变量的路径会基于模板文件路径
如果通过 `docker compose -f FILE` 方式来指定 Compose 模板文件 `env_file` 中变量的路径会基于模板文件路径
如果有变量名称与 `environment` 指令冲突则按照惯例以后者为准
@@ -246,7 +238,7 @@ expose:
>注意不建议使用该指令
链接到 `docker-compose.yml` 外部的容器甚至并非 `Compose` 管理的外部容器
链接到 Compose 文件外部的容器甚至并非 `Compose` 管理的外部容器
```yaml
external_links:
@@ -475,8 +467,6 @@ volumes:
如果路径为数据卷名称必须在文件中配置数据卷
```yaml
services:
my_src:
image: mysql:8.0
@@ -561,9 +551,9 @@ db:
image: "mongo:${MONGO_VERSION}"
```
如果执行 `MONGO_VERSION=3.2 docker-compose up` 则会启动一个 `mongo:3.2` 镜像的容器如果执行 `MONGO_VERSION=2.8 docker-compose up` 则会启动一个 `mongo:2.8` 镜像的容器
如果执行 `MONGO_VERSION=3.2 docker compose up` 则会启动一个 `mongo:3.2` 镜像的容器如果执行 `MONGO_VERSION=2.8 docker compose up` 则会启动一个 `mongo:2.8` 镜像的容器
若当前目录存在 `.env` 文件执行 `docker-compose` 命令时将从该文件中读取变量
若当前目录存在 `.env` 文件执行 `docker compose` 命令时将从该文件中读取变量
在当前目录新建 `.env` 文件并写入以下内容
@@ -573,7 +563,7 @@ db:
MONGO_VERSION=3.6
```
执行 `docker-compose up` 则会启动一个 `mongo:3.6` 镜像的容器
执行 `docker compose up` 则会启动一个 `mongo:3.6` 镜像的容器
### 参考资料