Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support docker compose v2 #586

Closed

Conversation

lel-amri
Copy link
Contributor

SUMMARY

Implementation of a module that supports docker-compose version 2.

The module has no dependency on external libraries. It relies on AnsibleModule.run_command() to execute docker-compose and on ansible.module_utils.common.yaml.yaml_dump() for dumping definition's content to docker-compose's stdin.

This module answers 90% of my needs. I tried to make it as flexible as possible, thus it is not as DRY as it could be. I'm not sure what path to take regarding idempotency in some case. I'd prefer to get feedback from the community about the various the usages of the docker_compose module and needs for the docker_compose_v2 module.

Should fix #216.

ISSUE TYPE
  • New Module Pull Request
COMPONENT NAME

docker_compose_v2

ADDITIONAL INFORMATION

I mostly took decisions based on what was discussed in #364.
Finally, this PR is mostly here to take advantage of the CI (and to allow comparison with @Sid-Sun's work at #540).

Copy link
Collaborator

@felixfontein felixfontein left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for your contribution! Please note that there is something strange going on in your branch, in https://github.com/ansible-collections/community.docker/pull/586/files you can see the module and a rename. I've added some more quick comments below.

Finally, this PR is mostly here to take advantage of the CI

Please note that you need to add integration tests (similar as in #540) in tests/integration/targets/docker_compose_v2/ to fully make use of CI :)

plugins/modules/docker_compose2.py Outdated Show resolved Hide resolved
plugins/modules/docker_compose2.py Outdated Show resolved Hide resolved
plugins/modules/docker_compose2.py Outdated Show resolved Hide resolved
plugins/modules/docker_compose2.py Outdated Show resolved Hide resolved
plugins/modules/docker_compose2.py Outdated Show resolved Hide resolved
@lel-amri
Copy link
Contributor Author

lel-amri commented Feb 12, 2023

Thanks for your contribution!

Thanks for your very fast review.

Please note that there is something strange going on in your branch, in https://github.com/ansible-collections/community.docker/pull/586/files you can see the module and a rename. I've added some more quick comments below.

I typo'ed when doing a git mv. I actually moved docker_container.py instead of docker_container2.py. This is fixed in c3b7ccc. I'm sorry that the history does not make any sense, the code I'm pushing isn't 1:1 the branch I'm working on. Nothing a squash can't fix :p

Finally, this PR is mostly here to take advantage of the CI

Please note that you need to add integration tests (similar as in #540) in tests/integration/targets/docker_compose_v2/ to fully make use of CI :)

I will !

@github-actions
Copy link

github-actions bot commented Feb 13, 2023

Docs Build 📝

Thank you for contribution!✨

The docs for this PR have been published here:
https://ansible-collections.github.io/community.docker/pr/586

You can compare to the docs for the main branch here:
https://ansible-collections.github.io/community.docker/branch/main

The docsite for this PR is also available for download as an artifact from this run:
https://github.com/ansible-collections/community.docker/actions/runs/4242520224

File changes:

Click to see the diff comparison.

NOTE: only file modifications are shown here. New and deleted files are excluded.
See the file list and check the published docs to see those files.

The diff output was truncated because it exceeded the maximum size.

diff --git a/home/runner/work/community.docker/community.docker/docsbuild/base/current_container_facts_module.html b/home/runner/work/community.docker/community.docker/docsbuild/head/current_container_facts_module.html
index 904e376..9427d57 100644
--- a/home/runner/work/community.docker/community.docker/docsbuild/base/current_container_facts_module.html
+++ b/home/runner/work/community.docker/community.docker/docsbuild/head/current_container_facts_module.html
@@ -89,6 +89,7 @@
 </ul>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="docker_compose_module.html">community.docker.docker_compose module – Manage multi-container Docker applications with Docker Compose.</a></li>
+<li class="toctree-l1"><a class="reference internal" href="docker_compose_v2_module.html">community.docker.docker_compose_v2 module – Manage multi-container Docker applications with Docker Compose.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_config_module.html">community.docker.docker_config module – Manage docker configs.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_module.html">community.docker.docker_container module – manage Docker containers</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_copy_into_module.html">community.docker.docker_container_copy_into module – Copy a file into a Docker container</a></li>
diff --git a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_api_connection.html b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_api_connection.html
index 9978e08..fd4f941 100644
--- a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_api_connection.html
+++ b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_api_connection.html
@@ -79,6 +79,7 @@
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="current_container_facts_module.html">community.docker.current_container_facts module – Return facts about whether the module runs in a container</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_compose_module.html">community.docker.docker_compose module – Manage multi-container Docker applications with Docker Compose.</a></li>
+<li class="toctree-l1"><a class="reference internal" href="docker_compose_v2_module.html">community.docker.docker_compose_v2 module – Manage multi-container Docker applications with Docker Compose.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_config_module.html">community.docker.docker_config module – Manage docker configs.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_module.html">community.docker.docker_container module – manage Docker containers</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_copy_into_module.html">community.docker.docker_container_copy_into module – Copy a file into a Docker container</a></li>
diff --git a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_compose_module.html b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_compose_module.html
index bf7ac08..0e0e184 100644
--- a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_compose_module.html
+++ b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_compose_module.html
@@ -20,7 +20,7 @@
         <script src="_static/sphinx_highlight.js"></script>
     <script src="_static/js/theme.js"></script>
     <link rel="search" title="Search" href="search.html" />
-    <link rel="next" title="community.docker.docker_config module – Manage docker configs." href="docker_config_module.html" />
+    <link rel="next" title="community.docker.docker_compose_v2 module – Manage multi-container Docker applications with Docker Compose." href="docker_compose_v2_module.html" />
     <link rel="prev" title="community.docker.current_container_facts module – Return facts about whether the module runs in a container" href="current_container_facts_module.html" /><!-- extra head elements for Ansible beyond RTD Sphinx Theme -->
 
 
@@ -92,6 +92,7 @@
 </li>
 </ul>
 </li>
+<li class="toctree-l1"><a class="reference internal" href="docker_compose_v2_module.html">community.docker.docker_compose_v2 module – Manage multi-container Docker applications with Docker Compose.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_config_module.html">community.docker.docker_config module – Manage docker configs.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_module.html">community.docker.docker_container module – manage Docker containers</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_copy_into_module.html">community.docker.docker_container_copy_into module – Copy a file into a Docker container</a></li>
@@ -1042,7 +1043,7 @@ see <a class="reference internal" href="#ansible-collections-community-docker-do
 
 <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
         <a href="current_container_facts_module.html" class="btn btn-neutral float-left" title="community.docker.current_container_facts module – Return facts about whether the module runs in a container" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
-        <a href="docker_config_module.html" class="btn btn-neutral float-right" title="community.docker.docker_config module – Manage docker configs." accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
+        <a href="docker_compose_v2_module.html" class="btn btn-neutral float-right" title="community.docker.docker_compose_v2 module – Manage multi-container Docker applications with Docker Compose." accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
     </div>
 
   <hr/>
diff --git a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_config_module.html b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_config_module.html
index e00ea58..0ac7e37 100644
--- a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_config_module.html
+++ b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_config_module.html
@@ -21,7 +21,7 @@
     <script src="_static/js/theme.js"></script>
     <link rel="search" title="Search" href="search.html" />
     <link rel="next" title="community.docker.docker_container module – manage Docker containers" href="docker_container_module.html" />
-    <link rel="prev" title="community.docker.docker_compose module – Manage multi-container Docker applications with Docker Compose." href="docker_compose_module.html" /><!-- extra head elements for Ansible beyond RTD Sphinx Theme -->
+    <link rel="prev" title="community.docker.docker_compose_v2 module – Manage multi-container Docker applications with Docker Compose." href="docker_compose_v2_module.html" /><!-- extra head elements for Ansible beyond RTD Sphinx Theme -->
 
 
 
@@ -79,6 +79,7 @@
 <ul class="current">
 <li class="toctree-l1"><a class="reference internal" href="current_container_facts_module.html">community.docker.current_container_facts module – Return facts about whether the module runs in a container</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_compose_module.html">community.docker.docker_compose module – Manage multi-container Docker applications with Docker Compose.</a></li>
+<li class="toctree-l1"><a class="reference internal" href="docker_compose_v2_module.html">community.docker.docker_compose_v2 module – Manage multi-container Docker applications with Docker Compose.</a></li>
 <li class="toctree-l1 current"><a class="current reference internal" href="#">community.docker.docker_config module – Manage docker configs.</a><ul>
 <li class="toctree-l2"><a class="reference internal" href="#synopsis">Synopsis</a></li>
 <li class="toctree-l2"><a class="reference internal" href="#requirements">Requirements</a></li>
@@ -628,7 +629,7 @@ see <a class="reference internal" href="#ansible-collections-community-docker-do
           
 
 <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
-        <a href="docker_compose_module.html" class="btn btn-neutral float-left" title="community.docker.docker_compose module – Manage multi-container Docker applications with Docker Compose." accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+        <a href="docker_compose_v2_module.html" class="btn btn-neutral float-left" title="community.docker.docker_compose_v2 module – Manage multi-container Docker applications with Docker Compose." accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
         <a href="docker_container_module.html" class="btn btn-neutral float-right" title="community.docker.docker_container module – manage Docker containers" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
     </div>
 
diff --git a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_connection.html b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_connection.html
index 47c0a87..8a86d9b 100644
--- a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_connection.html
+++ b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_connection.html
@@ -79,6 +79,7 @@
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="current_container_facts_module.html">community.docker.current_container_facts module – Return facts about whether the module runs in a container</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_compose_module.html">community.docker.docker_compose module – Manage multi-container Docker applications with Docker Compose.</a></li>
+<li class="toctree-l1"><a class="reference internal" href="docker_compose_v2_module.html">community.docker.docker_compose_v2 module – Manage multi-container Docker applications with Docker Compose.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_config_module.html">community.docker.docker_config module – Manage docker configs.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_module.html">community.docker.docker_container module – manage Docker containers</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_copy_into_module.html">community.docker.docker_container_copy_into module – Copy a file into a Docker container</a></li>
diff --git a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_container_copy_into_module.html b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_container_copy_into_module.html
index 3f807ba..cf0631f 100644
--- a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_container_copy_into_module.html
+++ b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_container_copy_into_module.html
@@ -79,6 +79,7 @@
 <ul class="current">
 <li class="toctree-l1"><a class="reference internal" href="current_container_facts_module.html">community.docker.current_container_facts module – Return facts about whether the module runs in a container</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_compose_module.html">community.docker.docker_compose module – Manage multi-container Docker applications with Docker Compose.</a></li>
+<li class="toctree-l1"><a class="reference internal" href="docker_compose_v2_module.html">community.docker.docker_compose_v2 module – Manage multi-container Docker applications with Docker Compose.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_config_module.html">community.docker.docker_config module – Manage docker configs.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_module.html">community.docker.docker_container module – manage Docker containers</a></li>
 <li class="toctree-l1 current"><a class="current reference internal" href="#">community.docker.docker_container_copy_into module – Copy a file into a Docker container</a><ul>
diff --git a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_container_exec_module.html b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_container_exec_module.html
index a9572c3..8f51667 100644
--- a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_container_exec_module.html
+++ b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_container_exec_module.html
@@ -79,6 +79,7 @@
 <ul class="current">
 <li class="toctree-l1"><a class="reference internal" href="current_container_facts_module.html">community.docker.current_container_facts module – Return facts about whether the module runs in a container</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_compose_module.html">community.docker.docker_compose module – Manage multi-container Docker applications with Docker Compose.</a></li>
+<li class="toctree-l1"><a class="reference internal" href="docker_compose_v2_module.html">community.docker.docker_compose_v2 module – Manage multi-container Docker applications with Docker Compose.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_config_module.html">community.docker.docker_config module – Manage docker configs.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_module.html">community.docker.docker_container module – manage Docker containers</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_copy_into_module.html">community.docker.docker_container_copy_into module – Copy a file into a Docker container</a></li>
diff --git a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_container_info_module.html b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_container_info_module.html
index d5b3cc5..72dcb7a 100644
--- a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_container_info_module.html
+++ b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_container_info_module.html
@@ -79,6 +79,7 @@
 <ul class="current">
 <li class="toctree-l1"><a class="reference internal" href="current_container_facts_module.html">community.docker.current_container_facts module – Return facts about whether the module runs in a container</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_compose_module.html">community.docker.docker_compose module – Manage multi-container Docker applications with Docker Compose.</a></li>
+<li class="toctree-l1"><a class="reference internal" href="docker_compose_v2_module.html">community.docker.docker_compose_v2 module – Manage multi-container Docker applications with Docker Compose.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_config_module.html">community.docker.docker_config module – Manage docker configs.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_module.html">community.docker.docker_container module – manage Docker containers</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_copy_into_module.html">community.docker.docker_container_copy_into module – Copy a file into a Docker container</a></li>
diff --git a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_container_module.html b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_container_module.html
index e1c0f96..b28dc94 100644
--- a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_container_module.html
+++ b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_container_module.html
@@ -79,6 +79,7 @@
 <ul class="current">
 <li class="toctree-l1"><a class="reference internal" href="current_container_facts_module.html">community.docker.current_container_facts module – Return facts about whether the module runs in a container</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_compose_module.html">community.docker.docker_compose module – Manage multi-container Docker applications with Docker Compose.</a></li>
+<li class="toctree-l1"><a class="reference internal" href="docker_compose_v2_module.html">community.docker.docker_compose_v2 module – Manage multi-container Docker applications with Docker Compose.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_config_module.html">community.docker.docker_config module – Manage docker configs.</a></li>
 <li class="toctree-l1 current"><a class="current reference internal" href="#">community.docker.docker_container module – manage Docker containers</a><ul>
 <li class="toctree-l2"><a class="reference internal" href="#synopsis">Synopsis</a></li>
diff --git a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_containers_inventory.html b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_containers_inventory.html
index a037ae4..ee610a4 100644
--- a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_containers_inventory.html
+++ b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_containers_inventory.html
@@ -79,6 +79,7 @@
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="current_container_facts_module.html">community.docker.current_container_facts module – Return facts about whether the module runs in a container</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_compose_module.html">community.docker.docker_compose module – Manage multi-container Docker applications with Docker Compose.</a></li>
+<li class="toctree-l1"><a class="reference internal" href="docker_compose_v2_module.html">community.docker.docker_compose_v2 module – Manage multi-container Docker applications with Docker Compose.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_config_module.html">community.docker.docker_config module – Manage docker configs.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_module.html">community.docker.docker_container module – manage Docker containers</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_copy_into_module.html">community.docker.docker_container_copy_into module – Copy a file into a Docker container</a></li>
diff --git a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_host_info_module.html b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_host_info_module.html
index ffe747e..a6b4411 100644
--- a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_host_info_module.html
+++ b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_host_info_module.html
@@ -79,6 +79,7 @@
 <ul class="current">
 <li class="toctree-l1"><a class="reference internal" href="current_container_facts_module.html">community.docker.current_container_facts module – Return facts about whether the module runs in a container</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_compose_module.html">community.docker.docker_compose module – Manage multi-container Docker applications with Docker Compose.</a></li>
+<li class="toctree-l1"><a class="reference internal" href="docker_compose_v2_module.html">community.docker.docker_compose_v2 module – Manage multi-container Docker applications with Docker Compose.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_config_module.html">community.docker.docker_config module – Manage docker configs.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_module.html">community.docker.docker_container module – manage Docker containers</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_copy_into_module.html">community.docker.docker_container_copy_into module – Copy a file into a Docker container</a></li>
diff --git a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_image_info_module.html b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_image_info_module.html
index 2865b7c..cbd8d01 100644
--- a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_image_info_module.html
+++ b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_image_info_module.html
@@ -79,6 +79,7 @@
 <ul class="current">
 <li class="toctree-l1"><a class="reference internal" href="current_container_facts_module.html">community.docker.current_container_facts module – Return facts about whether the module runs in a container</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_compose_module.html">community.docker.docker_compose module – Manage multi-container Docker applications with Docker Compose.</a></li>
+<li class="toctree-l1"><a class="reference internal" href="docker_compose_v2_module.html">community.docker.docker_compose_v2 module – Manage multi-container Docker applications with Docker Compose.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_config_module.html">community.docker.docker_config module – Manage docker configs.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_module.html">community.docker.docker_container module – manage Docker containers</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_copy_into_module.html">community.docker.docker_container_copy_into module – Copy a file into a Docker container</a></li>
diff --git a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_image_load_module.html b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_image_load_module.html
index 9c6af8e..69f7fff 100644
--- a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_image_load_module.html
+++ b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_image_load_module.html
@@ -79,6 +79,7 @@
 <ul class="current">
 <li class="toctree-l1"><a class="reference internal" href="current_container_facts_module.html">community.docker.current_container_facts module – Return facts about whether the module runs in a container</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_compose_module.html">community.docker.docker_compose module – Manage multi-container Docker applications with Docker Compose.</a></li>
+<li class="toctree-l1"><a class="reference internal" href="docker_compose_v2_module.html">community.docker.docker_compose_v2 module – Manage multi-container Docker applications with Docker Compose.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_config_module.html">community.docker.docker_config module – Manage docker configs.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_module.html">community.docker.docker_container module – manage Docker containers</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_copy_into_module.html">community.docker.docker_container_copy_into module – Copy a file into a Docker container</a></li>
diff --git a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_image_module.html b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_image_module.html
index 00394c4..22b0847 100644
--- a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_image_module.html
+++ b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_image_module.html
@@ -79,6 +79,7 @@
 <ul class="current">
 <li class="toctree-l1"><a class="reference internal" href="current_container_facts_module.html">community.docker.current_container_facts module – Return facts about whether the module runs in a container</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_compose_module.html">community.docker.docker_compose module – Manage multi-container Docker applications with Docker Compose.</a></li>
+<li class="toctree-l1"><a class="reference internal" href="docker_compose_v2_module.html">community.docker.docker_compose_v2 module – Manage multi-container Docker applications with Docker Compose.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_config_module.html">community.docker.docker_config module – Manage docker configs.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_module.html">community.docker.docker_container module – manage Docker containers</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_copy_into_module.html">community.docker.docker_container_copy_into module – Copy a file into a Docker container</a></li>
diff --git a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_login_module.html b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_login_module.html
index b372683..9f6db94 100644
--- a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_login_module.html
+++ b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_login_module.html
@@ -79,6 +79,7 @@
 <ul class="current">
 <li class="toctree-l1"><a class="reference internal" href="current_container_facts_module.html">community.docker.current_container_facts module – Return facts about whether the module runs in a container</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_compose_module.html">community.docker.docker_compose module – Manage multi-container Docker applications with Docker Compose.</a></li>
+<li class="toctree-l1"><a class="reference internal" href="docker_compose_v2_module.html">community.docker.docker_compose_v2 module – Manage multi-container Docker applications with Docker Compose.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_config_module.html">community.docker.docker_config module – Manage docker configs.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_module.html">community.docker.docker_container module – manage Docker containers</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_copy_into_module.html">community.docker.docker_container_copy_into module – Copy a file into a Docker container</a></li>
diff --git a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_machine_inventory.html b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_machine_inventory.html
index 347511c..80bac69 100644
--- a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_machine_inventory.html
+++ b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_machine_inventory.html
@@ -79,6 +79,7 @@
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="current_container_facts_module.html">community.docker.current_container_facts module – Return facts about whether the module runs in a container</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_compose_module.html">community.docker.docker_compose module – Manage multi-container Docker applications with Docker Compose.</a></li>
+<li class="toctree-l1"><a class="reference internal" href="docker_compose_v2_module.html">community.docker.docker_compose_v2 module – Manage multi-container Docker applications with Docker Compose.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_config_module.html">community.docker.docker_config module – Manage docker configs.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_module.html">community.docker.docker_container module – manage Docker containers</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_copy_into_module.html">community.docker.docker_container_copy_into module – Copy a file into a Docker container</a></li>
diff --git a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_network_info_module.html b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_network_info_module.html
index e709c66..08a4550 100644
--- a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_network_info_module.html
+++ b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_network_info_module.html
@@ -79,6 +79,7 @@
 <ul class="current">
 <li class="toctree-l1"><a class="reference internal" href="current_container_facts_module.html">community.docker.current_container_facts module – Return facts about whether the module runs in a container</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_compose_module.html">community.docker.docker_compose module – Manage multi-container Docker applications with Docker Compose.</a></li>
+<li class="toctree-l1"><a class="reference internal" href="docker_compose_v2_module.html">community.docker.docker_compose_v2 module – Manage multi-container Docker applications with Docker Compose.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_config_module.html">community.docker.docker_config module – Manage docker configs.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_module.html">community.docker.docker_container module – manage Docker containers</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_copy_into_module.html">community.docker.docker_container_copy_into module – Copy a file into a Docker container</a></li>
diff --git a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_network_module.html b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_network_module.html
index f5516df..26a6a0e 100644
--- a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_network_module.html
+++ b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_network_module.html
@@ -79,6 +79,7 @@
 <ul class="current">
 <li class="toctree-l1"><a class="reference internal" href="current_container_facts_module.html">community.docker.current_container_facts module – Return facts about whether the module runs in a container</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_compose_module.html">community.docker.docker_compose module – Manage multi-container Docker applications with Docker Compose.</a></li>
+<li class="toctree-l1"><a class="reference internal" href="docker_compose_v2_module.html">community.docker.docker_compose_v2 module – Manage multi-container Docker applications with Docker Compose.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_config_module.html">community.docker.docker_config module – Manage docker configs.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_module.html">community.docker.docker_container module – manage Docker containers</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_copy_into_module.html">community.docker.docker_container_copy_into module – Copy a file into a Docker container</a></li>
diff --git a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_node_info_module.html b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_node_info_module.html
index 4b4d51b..010f3fd 100644
--- a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_node_info_module.html
+++ b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_node_info_module.html
@@ -79,6 +79,7 @@
 <ul class="current">
 <li class="toctree-l1"><a class="reference internal" href="current_container_facts_module.html">community.docker.current_container_facts module – Return facts about whether the module runs in a container</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_compose_module.html">community.docker.docker_compose module – Manage multi-container Docker applications with Docker Compose.</a></li>
+<li class="toctree-l1"><a class="reference internal" href="docker_compose_v2_module.html">community.docker.docker_compose_v2 module – Manage multi-container Docker applications with Docker Compose.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_config_module.html">community.docker.docker_config module – Manage docker configs.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_module.html">community.docker.docker_container module – manage Docker containers</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_copy_into_module.html">community.docker.docker_container_copy_into module – Copy a file into a Docker container</a></li>
diff --git a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_node_module.html b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_node_module.html
index e90c367..7826444 100644
--- a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_node_module.html
+++ b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_node_module.html
@@ -79,6 +79,7 @@
 <ul class="current">
 <li class="toctree-l1"><a class="reference internal" href="current_container_facts_module.html">community.docker.current_container_facts module – Return facts about whether the module runs in a container</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_compose_module.html">community.docker.docker_compose module – Manage multi-container Docker applications with Docker Compose.</a></li>
+<li class="toctree-l1"><a class="reference internal" href="docker_compose_v2_module.html">community.docker.docker_compose_v2 module – Manage multi-container Docker applications with Docker Compose.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_config_module.html">community.docker.docker_config module – Manage docker configs.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_module.html">community.docker.docker_container module – manage Docker containers</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_copy_into_module.html">community.docker.docker_container_copy_into module – Copy a file into a Docker container</a></li>
diff --git a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_plugin_module.html b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_plugin_module.html
index 99b6918..a5a7baa 100644
--- a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_plugin_module.html
+++ b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_plugin_module.html
@@ -79,6 +79,7 @@
 <ul class="current">
 <li class="toctree-l1"><a class="reference internal" href="current_container_facts_module.html">community.docker.current_container_facts module – Return facts about whether the module runs in a container</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_compose_module.html">community.docker.docker_compose module – Manage multi-container Docker applications with Docker Compose.</a></li>
+<li class="toctree-l1"><a class="reference internal" href="docker_compose_v2_module.html">community.docker.docker_compose_v2 module – Manage multi-container Docker applications with Docker Compose.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_config_module.html">community.docker.docker_config module – Manage docker configs.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_module.html">community.docker.docker_container module – manage Docker containers</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_copy_into_module.html">community.docker.docker_container_copy_into module – Copy a file into a Docker container</a></li>
diff --git a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_prune_module.html b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_prune_module.html
index ca8ecb9..1e30b65 100644
--- a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_prune_module.html
+++ b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_prune_module.html
@@ -79,6 +79,7 @@
 <ul class="current">
 <li class="toctree-l1"><a class="reference internal" href="current_container_facts_module.html">community.docker.current_container_facts module – Return facts about whether the module runs in a container</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_compose_module.html">community.docker.docker_compose module – Manage multi-container Docker applications with Docker Compose.</a></li>
+<li class="toctree-l1"><a class="reference internal" href="docker_compose_v2_module.html">community.docker.docker_compose_v2 module – Manage multi-container Docker applications with Docker Compose.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_config_module.html">community.docker.docker_config module – Manage docker configs.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_module.html">community.docker.docker_container module – manage Docker containers</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_copy_into_module.html">community.docker.docker_container_copy_into module – Copy a file into a Docker container</a></li>
diff --git a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_secret_module.html b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_secret_module.html
index e4e07f7..262d99f 100644
--- a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_secret_module.html
+++ b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_secret_module.html
@@ -79,6 +79,7 @@
 <ul class="current">
 <li class="toctree-l1"><a class="reference internal" href="current_container_facts_module.html">community.docker.current_container_facts module – Return facts about whether the module runs in a container</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_compose_module.html">community.docker.docker_compose module – Manage multi-container Docker applications with Docker Compose.</a></li>
+<li class="toctree-l1"><a class="reference internal" href="docker_compose_v2_module.html">community.docker.docker_compose_v2 module – Manage multi-container Docker applications with Docker Compose.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_config_module.html">community.docker.docker_config module – Manage docker configs.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_module.html">community.docker.docker_container module – manage Docker containers</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_copy_into_module.html">community.docker.docker_container_copy_into module – Copy a file into a Docker container</a></li>
diff --git a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_stack_info_module.html b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_stack_info_module.html
index 53ec9ca..b59e680 100644
--- a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_stack_info_module.html
+++ b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_stack_info_module.html
@@ -79,6 +79,7 @@
 <ul class="current">
 <li class="toctree-l1"><a class="reference internal" href="current_container_facts_module.html">community.docker.current_container_facts module – Return facts about whether the module runs in a container</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_compose_module.html">community.docker.docker_compose module – Manage multi-container Docker applications with Docker Compose.</a></li>
+<li class="toctree-l1"><a class="reference internal" href="docker_compose_v2_module.html">community.docker.docker_compose_v2 module – Manage multi-container Docker applications with Docker Compose.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_config_module.html">community.docker.docker_config module – Manage docker configs.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_module.html">community.docker.docker_container module – manage Docker containers</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_copy_into_module.html">community.docker.docker_container_copy_into module – Copy a file into a Docker container</a></li>
diff --git a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_stack_module.html b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_stack_module.html
index d59009c..ce293ee 100644
--- a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_stack_module.html
+++ b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_stack_module.html
@@ -79,6 +79,7 @@
 <ul class="current">
 <li class="toctree-l1"><a class="reference internal" href="current_container_facts_module.html">community.docker.current_container_facts module – Return facts about whether the module runs in a container</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_compose_module.html">community.docker.docker_compose module – Manage multi-container Docker applications with Docker Compose.</a></li>
+<li class="toctree-l1"><a class="reference internal" href="docker_compose_v2_module.html">community.docker.docker_compose_v2 module – Manage multi-container Docker applications with Docker Compose.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_config_module.html">community.docker.docker_config module – Manage docker configs.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_module.html">community.docker.docker_container module – manage Docker containers</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_copy_into_module.html">community.docker.docker_container_copy_into module – Copy a file into a Docker container</a></li>
diff --git a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_stack_task_info_module.html b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_stack_task_info_module.html
index 6c84977..00b64e0 100644
--- a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_stack_task_info_module.html
+++ b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_stack_task_info_module.html
@@ -79,6 +79,7 @@
 <ul class="current">
 <li class="toctree-l1"><a class="reference internal" href="current_container_facts_module.html">community.docker.current_container_facts module – Return facts about whether the module runs in a container</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_compose_module.html">community.docker.docker_compose module – Manage multi-container Docker applications with Docker Compose.</a></li>
+<li class="toctree-l1"><a class="reference internal" href="docker_compose_v2_module.html">community.docker.docker_compose_v2 module – Manage multi-container Docker applications with Docker Compose.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_config_module.html">community.docker.docker_config module – Manage docker configs.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_module.html">community.docker.docker_container module – manage Docker containers</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_copy_into_module.html">community.docker.docker_container_copy_into module – Copy a file into a Docker container</a></li>
diff --git a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_swarm_info_module.html b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_swarm_info_module.html
index 900179a..f24d24a 100644
--- a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_swarm_info_module.html
+++ b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_swarm_info_module.html
@@ -79,6 +79,7 @@
 <ul class="current">
 <li class="toctree-l1"><a class="reference internal" href="current_container_facts_module.html">community.docker.current_container_facts module – Return facts about whether the module runs in a container</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_compose_module.html">community.docker.docker_compose module – Manage multi-container Docker applications with Docker Compose.</a></li>
+<li class="toctree-l1"><a class="reference internal" href="docker_compose_v2_module.html">community.docker.docker_compose_v2 module – Manage multi-container Docker applications with Docker Compose.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_config_module.html">community.docker.docker_config module – Manage docker configs.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_module.html">community.docker.docker_container module – manage Docker containers</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_copy_into_module.html">community.docker.docker_container_copy_into module – Copy a file into a Docker container</a></li>
diff --git a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_swarm_inventory.html b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_swarm_inventory.html
index 08640fe..8173a36 100644
--- a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_swarm_inventory.html
+++ b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_swarm_inventory.html
@@ -78,6 +78,7 @@
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="current_container_facts_module.html">community.docker.current_container_facts module – Return facts about whether the module runs in a container</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_compose_module.html">community.docker.docker_compose module – Manage multi-container Docker applications with Docker Compose.</a></li>
+<li class="toctree-l1"><a class="reference internal" href="docker_compose_v2_module.html">community.docker.docker_compose_v2 module – Manage multi-container Docker applications with Docker Compose.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_config_module.html">community.docker.docker_config module – Manage docker configs.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_module.html">community.docker.docker_container module – manage Docker containers</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_copy_into_module.html">community.docker.docker_container_copy_into module – Copy a file into a Docker container</a></li>
diff --git a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_swarm_module.html b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_swarm_module.html
index a3eed21..fbab89a 100644
--- a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_swarm_module.html
+++ b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_swarm_module.html
@@ -79,6 +79,7 @@
 <ul class="current">
 <li class="toctree-l1"><a class="reference internal" href="current_container_facts_module.html">community.docker.current_container_facts module – Return facts about whether the module runs in a container</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_compose_module.html">community.docker.docker_compose module – Manage multi-container Docker applications with Docker Compose.</a></li>
+<li class="toctree-l1"><a class="reference internal" href="docker_compose_v2_module.html">community.docker.docker_compose_v2 module – Manage multi-container Docker applications with Docker Compose.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_config_module.html">community.docker.docker_config module – Manage docker configs.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_module.html">community.docker.docker_container module – manage Docker containers</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_copy_into_module.html">community.docker.docker_container_copy_into module – Copy a file into a Docker container</a></li>
diff --git a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_swarm_service_info_module.html b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_swarm_service_info_module.html
index 3531cff..1d03fe9 100644
--- a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_swarm_service_info_module.html
+++ b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_swarm_service_info_module.html
@@ -79,6 +79,7 @@
 <ul class="current">
 <li class="toctree-l1"><a class="reference internal" href="current_container_facts_module.html">community.docker.current_container_facts module – Return facts about whether the module runs in a container</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_compose_module.html">community.docker.docker_compose module – Manage multi-container Docker applications with Docker Compose.</a></li>
+<li class="toctree-l1"><a class="reference internal" href="docker_compose_v2_module.html">community.docker.docker_compose_v2 module – Manage multi-container Docker applications with Docker Compose.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_config_module.html">community.docker.docker_config module – Manage docker configs.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_module.html">community.docker.docker_container module – manage Docker containers</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_copy_into_module.html">community.docker.docker_container_copy_into module – Copy a file into a Docker container</a></li>
diff --git a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_swarm_service_module.html b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_swarm_service_module.html
index 0367fb3..f2d1a0d 100644
--- a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_swarm_service_module.html
+++ b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_swarm_service_module.html
@@ -79,6 +79,7 @@
 <ul class="current">
 <li class="toctree-l1"><a class="reference internal" href="current_container_facts_module.html">community.docker.current_container_facts module – Return facts about whether the module runs in a container</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_compose_module.html">community.docker.docker_compose module – Manage multi-container Docker applications with Docker Compose.</a></li>
+<li class="toctree-l1"><a class="reference internal" href="docker_compose_v2_module.html">community.docker.docker_compose_v2 module – Manage multi-container Docker applications with Docker Compose.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_config_module.html">community.docker.docker_config module – Manage docker configs.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_module.html">community.docker.docker_container module – manage Docker containers</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_copy_into_module.html">community.docker.docker_container_copy_into module – Copy a file into a Docker container</a></li>
diff --git a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_volume_info_module.html b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_volume_info_module.html
index 2661a36..6e3df3a 100644
--- a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_volume_info_module.html
+++ b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_volume_info_module.html
@@ -79,6 +79,7 @@
 <ul class="current">
 <li class="toctree-l1"><a class="reference internal" href="current_container_facts_module.html">community.docker.current_container_facts module – Return facts about whether the module runs in a container</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_compose_module.html">community.docker.docker_compose module – Manage multi-container Docker applications with Docker Compose.</a></li>
+<li class="toctree-l1"><a class="reference internal" href="docker_compose_v2_module.html">community.docker.docker_compose_v2 module – Manage multi-container Docker applications with Docker Compose.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_config_module.html">community.docker.docker_config module – Manage docker configs.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_module.html">community.docker.docker_container module – manage Docker containers</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_copy_into_module.html">community.docker.docker_container_copy_into module – Copy a file into a Docker container</a></li>
diff --git a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_volume_module.html b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_volume_module.html
index a57fa4d..85e191c 100644
--- a/home/runner/work/community.docker/community.docker/docsbuild/base/docker_volume_module.html
+++ b/home/runner/work/community.docker/community.docker/docsbuild/head/docker_volume_module.html
@@ -79,6 +79,7 @@
 <ul class="current">
 <li class="toctree-l1"><a class="reference internal" href="current_container_facts_module.html">community.docker.current_container_facts module – Return facts about whether the module runs in a container</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_compose_module.html">community.docker.docker_compose module – Manage multi-container Docker applications with Docker Compose.</a></li>
+<li class="toctree-l1"><a class="reference internal" href="docker_compose_v2_module.html">community.docker.docker_compose_v2 module – Manage multi-container Docker applications with Docker Compose.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_config_module.html">community.docker.docker_config module – Manage docker configs.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_module.html">community.docker.docker_container module – manage Docker containers</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_copy_into_module.html">community.docker.docker_container_copy_into module – Copy a file into a Docker container</a></li>
diff --git a/home/runner/work/community.docker/community.docker/docsbuild/base/docsite/scenario_guide.html b/home/runner/work/community.docker/community.docker/docsbuild/head/docsite/scenario_guide.html
index f11a0f5..859fcc8 100644
--- a/home/runner/work/community.docker/community.docker/docsbuild/base/docsite/scenario_guide.html
+++ b/home/runner/work/community.docker/community.docker/docsbuild/head/docsite/scenario_guide.html
@@ -98,6 +98,7 @@
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="../current_container_facts_module.html">community.docker.current_container_facts module – Return facts about whether the module runs in a container</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../docker_compose_module.html">community.docker.docker_compose module – Manage multi-container Docker applications with Docker Compose.</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../docker_compose_v2_module.html">community.docker.docker_compose_v2 module – Manage multi-container Docker applications with Docker Compose.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../docker_config_module.html">community.docker.docker_config module – Manage docker configs.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../docker_container_module.html">community.docker.docker_container module – manage Docker containers</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../docker_container_copy_into_module.html">community.docker.docker_container_copy_into module – Copy a file into a Docker container</a></li>
diff --git a/home/runner/work/community.docker/community.docker/docsbuild/base/environment_variables.html b/home/runner/work/community.docker/community.docker/docsbuild/head/environment_variables.html
index 170d6ee..c458fd7 100644
--- a/home/runner/work/community.docker/community.docker/docsbuild/base/environment_variables.html
+++ b/home/runner/work/community.docker/community.docker/docsbuild/head/environment_variables.html
@@ -77,6 +77,7 @@
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="current_container_facts_module.html">community.docker.current_container_facts module – Return facts about whether the module runs in a container</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_compose_module.html">community.docker.docker_compose module – Manage multi-container Docker applications with Docker Compose.</a></li>
+<li class="toctree-l1"><a class="reference internal" href="docker_compose_v2_module.html">community.docker.docker_compose_v2 module – Manage multi-container Docker applications with Docker Compose.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_config_module.html">community.docker.docker_config module – Manage docker configs.</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_module.html">community.docker.docker_container module – manage Docker containers</a></li>
 <li class="toctree-l1"><a class="reference internal" href="docker_container_copy_into_module.html">community.docker.docker_container_copy_into module – Copy a file into a Docker container</a></li>
diff --git a/home/runner/work/community.docker/community.docker/docsbuild/base/index.html b/home/runner/work/community.docker/community.docker/docsbuild/head/index.html
index 0d052a7..7c76c99 100644
--- a/home/runner/work/community.docker/community.docker/docsbuild/base/index.html
+++ b/home/runner/work/community.docker/community.docker/docsbuild/head/index.html
@@ -78,6 +78,7 @@
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="current_container_facts_module.html">community.docker.current_container_fact

plugins/modules/docker_compose_v2.py Outdated Show resolved Hide resolved
plugins/modules/docker_compose_v2.py Outdated Show resolved Hide resolved
plugins/modules/docker_compose_v2.py Outdated Show resolved Hide resolved
plugins/modules/docker_compose_v2.py Outdated Show resolved Hide resolved
plugins/modules/docker_compose_v2.py Outdated Show resolved Hide resolved
plugins/module_utils/_yaml.py Outdated Show resolved Hide resolved
plugins/modules/docker_compose_v2.py Outdated Show resolved Hide resolved
plugins/modules/docker_compose_v2.py Outdated Show resolved Hide resolved
- Swarm mode is not supported (thus secrets and configs are not supported).
- Configuration can be read from a Compose file or inline using the I(definition) option.
- See the examples for more details.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
extends_documentation_fragment:
- community.docker.attributes

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe the docker_compose_v2 module does not support what's documented in this fragment.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's fine, as long as it documents that it doesn't support them with support: none :) You really need to add this documentation fragment, otherwise the sanity tests will continue failing.

plugins/modules/docker_compose_v2.py Outdated Show resolved Hide resolved
plugins/modules/docker_compose_v2.py Outdated Show resolved Hide resolved
plugins/modules/docker_compose_v2.py Outdated Show resolved Hide resolved
- Setting to C(never) ignores configuration differences and leaves existing containers unchanged.
- Setting to C(always) forces recreation of all existing containers.
- When set to C(never), equivalent to C(docker-compose up --no-recreate).
- When set to C(always), equivalent to C(docker-compose up --force-recreate).
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

smart is not documented here.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is implied on the line right above (and because the default value for this choice is smart):

- By default containers will be recreated when their configuration differs from the service definition.

Should I expand as follow ?:

By default (when set to C(smart)) containers will be recreated when their configuration differs from the service definition.

I'd prefer to remove the default value for the choice, but I'm not sure this is allowed.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would remove the default. I personally prefer explicit over implicit.

Once the default is gone, the first paragraph should be When set to C(smart), contains will be recreated ... or something like that anyway.

plugins/modules/docker_compose_v2.py Show resolved Hide resolved
#!/usr/bin/python
# -*- coding: utf-8 -*-

# Copyright Léo El Amri
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please note that in case you copied significant parts of an existing module (like documentation), you need to add the copyright lines from that module here as well.

@craph
Copy link

craph commented Mar 6, 2023

Hello, @felixfontein , @lel-amri , I don't understand how your code works with the new docker compose plugin written in Go.
Inside your Python code you are referencing docker-compose L.495 docker_compose_v2.py

how are you connecting with the API ?

Thank you very much for your help

@lel-amri
Copy link
Contributor Author

lel-amri commented Mar 6, 2023

@craph

how are you connecting with the API ?

docker-compose is responsible for calling the docker daemon API. AFAIK there is no API offered by docker-compose. In previous versions of this module, we used the internals of docker-compose version 1, because it was implemented in Python. In version 2, since this is Go, there is no way for us to interface with the internals of docker-compose. Here I'm relying on the textual output of docker-compose to deduce what was done. There is a lot of limits with this approach, the biggest being that the textual output isn't guaranteed to be stable, thus this module could break easily any time in the future.
To implement this module I read docker-compose's source code, especially the pkg/progress/plain.go and pkg/progress/event.go files.

@craph
Copy link

craph commented Mar 6, 2023

@lel-amri Thank you very much for the update.
But, if I install the latest version of docker-ce with the docker-ce-cli and docker-compose-plugin to have the latest version of docker compose V2.16.0 the command docker-compose doesn't exists anymore if I understand correctly the documentation.
The only thing available is to create an alias docker-compose that calls docker compose the new way to call compose V2.

I was just curious to understand how it is working to call compose v2

@lel-amri
Copy link
Contributor Author

lel-amri commented Mar 6, 2023

@craph

if I install the latest version of docker-ce with the docker-ce-cli and docker-compose-plugin to have the latest version of docker compose V2.16.0 the command docker-compose doesn't exists anymore

Indeed, I overlooked that, thanks for reporting. I'll come up with a fix in this PR. This only works with the docker-compose standalone for now. In the meantime, the "alias" of docker-compose to docker compose will work as a workaround.

@craph
Copy link

craph commented Apr 26, 2023

Any update about the support of docker compose version 2 ?

@lel-amri
Copy link
Contributor Author

I have to finish writing tests. I've already implemented the fix for supporting docker compose as a docker plugin, but didn't pushed it yet.

Also, I have encountered an issue in a real-world scenario. Docker compose got an update that modifies what is written on stderr. That broke the module's reporting (not reporting changed when it should have). I think we will have to ask for stability on stderr, or a way to make this machine parseable. This would also benefit POW.

@shantanoo-desai
Copy link

@lel-amri is it because of the ANSI graphics on the terminal? I think you can use docker compose --ansi=never

@lel-amri
Copy link
Contributor Author

@lel-amri is it because of the ANSI graphics on the terminal? I think you can use docker compose --ansi=never

That's already what I'm doing ;) :

command = [DOCKER_COMPOSE_EXECUTABLE, '--ansi', 'never']

They changed uppercase letters to lowercase letters and they removed some extra spaces in some messages. Also reporting of image pulling changed (but I do not support that for now, because I could tell the output wouldn't be stable). I've made parsing more lenient, but I still consider parsing "human targeted" output to be dirty.

@kwint
Copy link

kwint commented May 30, 2023

What is the status about this? Anything we can help with?

Is there an issue on composes repo to ask for a stable output to stderr/stdout?

@dansou901
Copy link

It's been a few months since the last status update. I'm currently restructuring my ansible collections / roles which also use docker compose, so I try to determine my best course of action. I can either use the shell module to run docker compose v2 or wait for the implementation of this module. Is this still being developed?

@sebdanielsson
Copy link

It's been a few months since the last status update. I'm currently restructuring my ansible collections / roles which also use docker compose, so I try to determine my best course of action. I can either use the shell module to run docker compose v2 or wait for the implementation of this module. Is this still being developed?

If you decide to go with the first option. Would you like to share your implementation?

@dansou901
Copy link

dansou901 commented Jul 31, 2023

My implementation for compose up -d is the following:

- name: start container
  shell: docker compose --ansi never up -d --no-recreate
  args:
    executable: /bin/bash
    chdir: /path/to/docker-compose.yml 
  register: compose
- name: check if container is running
  assert:
    that:
      - "'Running' in compose.stderr or 'Started' in compose.stderr" 

@dansou901
Copy link

If you want to loop that, it looks like

- name: start containers
  shell: docker compose --ansi never up -d --no-recreate
  args:
    executable: /bin/bash
    chdir: "{{ item }}"
  loop:
    - /path1/to/docker-compose.yml
    - /path2/to/docker-compose.yml
    - ...
  register: compose
- name: check if containers are running
  assert:
    that:
      - "'Running' in item.stderr or 'Started' in item.stderr"
  loop: "{{ compose.results }}"

@sebdanielsson
Copy link

Thank you! Much appreciated🎉

@Callum027
Copy link

Callum027 commented Aug 21, 2023

Here is what I've been using. It's fully idempotent (and therefore Molecule-friendly) without using ansible.builtin.fail or ansible.builtin.assert. (It also doesn't use the relatively insecure ansible.builtin.shell).

- name: Create compose file
  ansible.builtin.template:
    src: docker-compose.yml.j2
    dest: /path/to/docker-compose.yml
    owner: root
    group: docker
    mode: "0644"

- name: Validate compose file
  ansible.builtin.command:
    cmd: docker compose --file docker-compose.yml config --quiet
    chdir: /path/to
  changed_when: false

- name: Pull container images
  ansible.builtin.command:
    cmd: docker compose --ansi never --progress plain --file docker-compose.yml pull
    chdir: /path/to
  register: temp_compose_pull
  changed_when: "'Downloading' in temp_compose_pull.stdout"

- name: Start containers
  ansible.builtin.command:
    cmd: docker compose --ansi never --progress plain --file docker-compose.yml up --detach
    chdir: /path/to
  register: temp_compose_up
  changed_when: "'Started' in temp_compose_up.stdout"

@kpinarci
Copy link

Any updates here? I have the same issue with docker-compose v2.

@kaysond
Copy link
Contributor

kaysond commented Sep 28, 2023

Bump. It's a real bummer that the compose plugin isn't supported yet since v1 has been deprecated for a while now.

Is there anything blocking this PR?

@SirousSayahi
Copy link

Hi
Is this module still being developed?
Compose v1 has been deprecated for a while now. It is strange that there is no update yet!

@defconxt
Copy link

defconxt commented Dec 7, 2023

would be nice

@geerlingguy
Copy link

Just tried setting up another server this morning and trying to use Docker + Compose latest versions on a modern Debian install with Ansible's module is nearly impossible (between pip install incompatibilities, trying to get the old Python docker-compose package working, etc.).

Fingers crossed this upgrade can get across the line—for now I'm going to be modifying my playbooks to use command and docker compose commands manually as suggested by @Callum027

@felixfontein
Copy link
Collaborator

@geerlingguy this PR is stale and merging my new PR (#739) will close it. If there are no big complaints I'm planning on merging my PR and getting a new release out by the end of this week.

@lel-amri
Copy link
Contributor Author

lel-amri commented Jan 2, 2024

Hello @felixfontein,

Thanks for continuing this work. I have no complaints. I'd just like to reiterate that until Docker Compose's output gets stable, the method we are using for reading its state is very fragile (as a reminder, it changed at least two times while I was developing this PR). I kind of lost interest in this over time because of how hard it seems to me to stabilize Docker Compose internals in this regard (and also because existing issues didn't get a lot of attention).

I'm wondering what would be the impact on users if we advertise the docker_compose_v2 as stable as-is though. I think we should test this with different versions of docker-compose, explicitly list versions known to be compatible, and put a disclaimer about the uncertainty of compatibility with untested versions.

@felixfontein
Copy link
Collaborator

Thanks for continuing this work. I have no complaints. I'd just like to reiterate that until Docker Compose's output gets stable, the method we are using for reading its state is very fragile (as a reminder, it changed at least two times while I was developing this PR).

I fully agree. This is a serious problem with Docker Compose in general (it's also not surprising from how much feedback docker/compose#10872 got since August).

I kind of lost interest in this over time because of how hard it seems to me to stabilize Docker Compose internals in this regard (and also because existing issues didn't get a lot of attention).

(I guess you mean the above issue.)

I'm wondering what would be the impact on users if we advertise the docker_compose_v2 as stable as-is though. I think we should test this with different versions of docker-compose, explicitly list versions known to be compatible, and put a disclaimer about the uncertainty of compatibility with untested versions.

Nothing in this collection is "stable" for all future versions of things they depend on (and that's pretty much impossible anyway). But I guess explicitly mentioning it for the new module is a good idea, since Docker Compose seems to be less stable than other things (looking at the breaking change docker/compose#10918, for example, which got simply labelled as a "bugfix").

Right now CI tests with several versions (as you can see from the various self.compose_version comparisons in https://github.com/ansible-collections/community.docker/blob/d30085526a02b4ff931d7174eb7ebcea4aab6c00/plugins/modules/docker_compose_v2.py)

Since the actual docker compose plugin versions depend on various factors and change over times (especially for the rolling releases used in CI, like Arch Linux) I don't want to explicitly list the versions this is being tested with though. (If someone wants to automate retrieving the versions this is tested with and create tooling to create PRs which update the documentation I'll happily review and use that.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
docker-compose-v2 Docker Compose v2
Projects
None yet
Development

Successfully merging this pull request may close these issues.

docker-compose 2.0.0 is no longer written in Python, thus breaking the docker_compose module