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。您需要其他要求才能使用此模块,请参阅 要求 以了解详情。
要在剧本中使用它,请指定:community.docker.docker_compose_v2。
community.docker 3.6.0 中新增
概要
- 使用 Docker Compose 启动或关闭服务。 
要求
以下要求在执行此模块的主机上是必需的。
- 带有 Docker compose 插件 2.18.0 或更高版本的 Docker CLI 
- 如果使用 - 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 保护与 API 的连接,无需验证 Docker 主机服务器的身份。请注意,如果 如果任务中未指定此值,则将使用环境变量 选项 
 | |
| 验证 Docker 主机服务器身份时,请提供服务器的预期名称。 如果任务中未指定此值,则将使用环境变量 | |
| 使用 TLS 保护与 API 的连接并验证 Docker 主机服务器的身份。 如果任务中未指定此值,则将使用环境变量 选项 
 | |
| 当 | 
属性
| 属性 | 支持 | 描述 | 
|---|---|---|
| 操作组: 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.dockerd.com.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.dockerd.com.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。 返回:成功 示例: | |
| 此镜像所属的仓库。 返回:成功 | |
| 镜像的大小(字节)。 返回:成功 | |
| 镜像的标签。 返回:成功 | 
