mirror of
https://github.com/yeasy/docker_practice.git
synced 2026-03-10 20:04:36 +00:00
Fix and improve
This commit is contained in:
@@ -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` 镜像的容器。
|
||||
|
||||
### 参考资料
|
||||
|
||||
|
||||
Reference in New Issue
Block a user