community.docker.docker_compose_v2 模块 – 使用 Docker Compose CLI 插件管理多容器 Docker 应用
注意
此模块是 community.docker 集合(版本 4.1.0)的一部分。
如果您使用的是 ansible
包,您可能已经安装了此集合。它不包含在 ansible-core
中。要检查是否已安装,请运行 ansible-galaxy collection list
。
要安装它,请使用:ansible-galaxy collection install community.docker
。您需要其他要求才能使用此模块,请参阅 要求 了解详细信息。
要在 playbook 中使用它,请指定:community.docker.docker_compose_v2
。
community.docker 3.6.0 中的新增功能
概要
使用 Docker Compose 启动或关闭服务。
要求
以下要求需要在执行此模块的主机上满足。
Docker CLI,带有 Docker compose 插件 2.18.0 或更高版本
如果使用
definition
,则需要 PyYAML
参数
参数 |
注释 |
---|---|
在 Docker 主机上运行的 Docker API 版本。 默认为此集合和 Docker 守护程序支持的最新 API 版本。 如果在任务中未指定该值,则将改为使用环境变量 默认: |
|
是否在启动容器之前构建镜像。这在运行
选项
|
|
通过提供 CA 证书文件的路径,在使用服务器验证时使用 CA 证书。 如果在任务中未指定该值,并且设置了环境变量 |
|
如果设置为 如果使用带有 选项
|
|
要使用的 Docker CLI 上下文。 与 |
|
客户端 TLS 证书文件的路径。 如果在任务中未指定该值,并且设置了环境变量 |
|
客户端 TLS 密钥文件的路径。 如果任务中未指定该值,并且设置了环境变量 |
|
描述一个或多个服务、网络和卷的 Compose 文件。 与 如果提供了此项,则此模块必须可以使用 PyYAML,并且必须指定 请注意,使用此选项时,会创建一个临时目录,并在之后删除。 |
|
Docker CLI 的路径。如果未提供,将在 |
|
用于连接 Docker API 的 URL 或 Unix 套接字路径。要连接到远程主机,请提供 TCP 连接字符串。例如, 如果任务中未指定该值,则将使用环境变量 与 |
|
默认情况下,环境变量文件从位于 可以使用 该路径相对于 |
|
相对于 文件按照给定的顺序加载和合并。 与 |
|
启动服务时要启用的配置文件列表。 等效于 |
|
提供项目名称。如果未提供,则项目名称取自 提供 |
|
包含 Compose 文件( 如果提供了 与 |
|
是否在运行之前拉取镜像。这在运行
选项
|
|
默认情况下,当容器的配置与服务定义不同时,将重新创建容器。 设置为 设置为 选项
|
|
删除 Compose 文件中未定义的服务容器。 选项
|
|
是否重新创建而不是重用以前容器中的匿名卷。
选项
|
|
定义在运行 提供键/值对的字典,其中键是服务的名称,值是容器数量的整数计数。 |
|
指定要作为目标的服务的子集。 |
|
项目的所需状态。
选项
|
|
当附加到容器或容器已在运行时,容器关闭的超时时间(秒)。 |
|
通过使用 TLS 但不验证 Docker 主机服务器的真实性来保护与 API 的连接。请注意,如果 如果任务中未指定该值,则将使用环境变量 选项
|
|
在验证 Docker 主机服务器的真实性时,提供服务器的预期名称。 如果任务中未指定该值,则将使用环境变量 |
|
通过使用 TLS 并验证 Docker 主机服务器的真实性来保护与 API 的连接。 如果任务中未指定该值,则将使用环境变量 选项
|
|
当 |
属性
属性 |
支持 |
描述 |
---|---|---|
操作组: community.docker.docker、docker |
在 |
|
支持: 完全 在检查模式下,拉取镜像不会导致结果发生更改。 |
可以在 |
|
支持: 无 |
当处于差异模式时,将返回已更改(或可能需要在 |
注意
注意
Docker compose CLI 插件没有稳定的输出格式(例如,请参阅 https://github.com/docker/compose/issues/10872),并且对于主要操作也没有机器友好的输出格式。该模块尝试通过各种依赖于版本的行为调整以及测试 Docker compose CLI 插件的旧版本和新版本来适应这种情况。目前,该模块已通过 2.18.1 到 2.23.3 之间的多个插件版本进行了测试。插件版本的确切列表会随着时间的推移而更改。Docker compose CLI 插件的新版本随时可能破坏此模块。
通过为每个任务提供参数或定义环境变量来连接到 Docker 守护程序。您可以定义
DOCKER_HOST
、DOCKER_TLS_HOSTNAME
、DOCKER_API_VERSION
、DOCKER_CERT_PATH
、DOCKER_TLS
、DOCKER_TLS_VERIFY
和DOCKER_TIMEOUT
。如果您正在使用 docker machine,请运行该产品附带的设置环境的脚本。它将为您设置这些变量。有关更多详细信息,请参阅 https://docs.docker.net.cn/machine/reference/env/。此模块**不**使用 Docker SDK for Python 与 Docker 守护程序通信。它直接调用 Docker CLI 程序。
另请参阅
另请参阅
- community.docker.docker_compose_v2_pull
拉取 Docker compose 项目。
示例
# Examples use the django example at https://docs.docker.net.cn/compose/django. Follow it to create the
# flask directory
- name: Run using a project directory
hosts: localhost
gather_facts: false
tasks:
- name: Tear down existing services
community.docker.docker_compose_v2:
project_src: flask
state: absent
- name: Create and start services
community.docker.docker_compose_v2:
project_src: flask
register: output
- name: Show results
ansible.builtin.debug:
var: output
- name: Run `docker compose up` again
community.docker.docker_compose_v2:
project_src: flask
register: output
- name: Show results
ansible.builtin.debug:
var: output
- ansible.builtin.assert:
that: not output.changed
- name: Stop all services
community.docker.docker_compose_v2:
project_src: flask
state: stopped
register: output
- name: Show results
ansible.builtin.debug:
var: output
- name: Verify that web and db services are not running
ansible.builtin.assert:
that:
- web_container.State != 'running'
- db_container.State != 'running'
vars:
web_container: >-
{{ output.containers | selectattr("Service", "equalto", "web") | first }}
db_container: >-
{{ output.containers | selectattr("Service", "equalto", "db") | first }}
- name: Restart services
community.docker.docker_compose_v2:
project_src: flask
state: restarted
register: output
- name: Show results
ansible.builtin.debug:
var: output
- name: Verify that web and db services are running
ansible.builtin.assert:
that:
- web_container.State == 'running'
- db_container.State == 'running'
vars:
web_container: >-
{{ output.containers | selectattr("Service", "equalto", "web") | first }}
db_container: >-
{{ output.containers | selectattr("Service", "equalto", "db") | first }}
返回值
常见的返回值记录在此处,以下是此模块特有的字段
键 |
描述 |
---|---|
已应用的动作列表。 返回: 成功 |
|
已更改的资源的 ID。 返回: 成功 示例: |
|
发生的状态更改。 返回: 成功 只能返回
示例: |
|
更改了哪种类型的资源。 返回: 成功 只能返回
示例: |
|
与服务关联的容器列表。 返回: 成功 |
|
容器的命令。 返回: 成功 |
|
创建容器的时间戳。 返回: 成功 示例: |
|
容器的退出代码。 返回: 成功 |
|
容器的健康检查。 返回: 成功 |
|
容器的 ID。 返回: 成功 示例: |
|
容器的镜像。 返回: 成功 |
|
此容器的标签。 返回: 成功 |
|
本地卷计数。 返回: 成功 |
|
挂载。 返回: 成功 |
|
容器的主名称。 返回: 成功 |
|
容器的名称列表。 返回: 成功 |
|
附加到此容器的网络列表。 返回: 成功 |
|
端口分配的字符串列表。 返回: 成功 |
|
端口分配列表。 返回: 成功 |
|
协议。 返回: 成功 只能返回
|
|
发布的端口。 返回: 成功 |
|
已发布的端口映射到的容器端口。 返回: 成功 |
|
端口绑定到的接口。 返回: 成功 |
|
容器运行的时间。 返回: 成功 |
|
服务的名称。 返回: 成功 |
|
容器的大小。 返回: 成功 示例: |
|
容器的状态。 返回: 成功 示例: |
|
容器的状态。 返回: 成功 示例: |
|
与服务关联的镜像列表。 返回: 成功 |
|
此镜像使用的容器名称。 返回: 成功 |
|
镜像的 ID。 返回: 成功 示例: |
|
此镜像所属的仓库。 返回: 成功 |
|
镜像的大小(以字节为单位)。 返回: 成功 |
|
镜像的标签。 返回: 成功 |