Compose
是用于定义和运行多容器Docker
应用程序的工具。通过Compose
,您可以使用YML
文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从YML
文件配置中创建并启动所有服务。
Compose 使用的三个步骤:
- 使用
Dockerfile
定义应用程序的环境。 - 使用
docker-compose.yml
定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。 - 最后,执行
docker-compose up
命令来启动并运行整个应用程序。
一个例子
|
|
该 Compose 文件定义了两个服务:web
和redis
。
web
:该 web 服务使用从 Dockerfile 当前目录中构建的镜像。然后,它将容器和主机绑定到暴露的端口 5000。此示例服务使用 Flask Web 服务器的默认端口 5000 。redis
:该 redis 服务使用 Docker Hub 的公共 Redis 映像。
安装
|
|
运行
|
|
yml
配置指令参考
version
指定本yml
依从的compose
哪个版本制定的。
build
指定为构建镜像上下文路径
例如 webapp 服务,指定为从上下文路径 ./dir/Dockerfile
所构建的镜像:
|
|
或者,作为具有在上下文指定的路径的对象,以及可选的 Dockerfile 和 args:
|
|
context
:上下文路径。dockerfile
:指定构建镜像的 Dockerfile 文件名。args
:添加构建参数,这是只能在构建过程中访问的环境变量。labels
:设置构建镜像的标签。target
:多层构建,可以指定构建哪一层。
command
覆盖容器启动的默认命令。
|
|
container_name
指定自定义容器名称,而不是生成的默认名称。
|
|
depends_on
设置依赖关系。
docker-compose up
:以依赖性顺序启动服务。在以下示例中,先启动 db 和 redis ,才会启动 web。docker-compose up SERVICE
:自动包含 SERVICE 的依赖项。在以下示例中,docker-compose up web 还将创建并启动 db 和 redis。docker-compose stop
:按依赖关系顺序停止服务。在以下示例中,web 在 db 和 redis 之前停止。
|
|
注意:web
服务不会等待redis db
完全启动 之后才启动。
entrypoint
覆盖容器默认的entrypoint
。
|
|
也可以是以下格式:
|
|
env_file
从文件添加环境变量。可以是单个值或列表的多个值。
|
|
也可以是列表格式:
|
|
environment
添加环境变量。您可以使用数组或字典、任何布尔值,布尔值需要用引号引起来,以确保 YML 解析器不会将其转换为 True 或 False。
|
|
expose
暴露端口,但不映射到宿主机,只被连接的服务访问。
仅可以指定内部端口为参数:
|
|
image
指定容器运行的镜像。以下格式都可以:
|
|
logging
服务的日志记录配置。
driver:指定服务容器的日志记录驱动程序,默认值为json-file。有以下三个选项
|
|
仅在 json-file 驱动程序下,可以使用以下参数,限制日志得数量和大小。
|
|
当达到文件限制上限,会自动删除旧得文件。
syslog 驱动程序下,可以使用 syslog-address 指定日志接收地址。
|
|
restart
no
:是默认的重启策略,在任何情况下都不会重启容器。always
:容器总是重新启动。on-failure
:在容器非正常退出时(退出状态非0),才会重启容器。unless-stopped
:在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器
|
|
volumes
将主机的数据卷或着文件挂载到容器里。
|
|
ports
|
|
綁定容器的456端口到主机的123端口
创建
|
|
启动
|
|