How to run docker-compose commands with ansible?

Updated answer 02/2024:

docker_compose_v2 is out since community.docker v3.6.0.

You can copy docker-compose.yml and run Compose such as:

- name: copy Docker Compose files
  copy:
    src: files/{{ item }}
    dest: /somewhere/yourproject/{{ item }}
  loop:
  - docker-compose.yml
  - docker-compose.prod.yml

# use files parameter to use multiple docker-compose.yml files
# mind the _v2 suffix
- name: deploy Docker Compose stack
  community.docker.docker_compose_v2:
    project_src: /somewhere/yourproject
    files:
    - docker-compose.yml
    - docker-compose.prod.yml

Old answer (06/2020) using docker_compose module, only compatible with docker-compose < 2.0.0:

You should copy your Docker Compose files and use docker_compose module such as:

- name: copy Docker Compose files
  copy:
    src: files/{{ item }}
    dest: /somewhere/yourproject/{{ item }}
  loop:
  - docker-compose.yml
  - docker-compose.prod.yml

# use files parameter to use multiple docker-compose.yml files
- name: deploy Docker Compose stack
  community.docker.docker_compose:
    project_src: /somewhere/yourproject
    files:
    - docker-compose.yml
    - docker-compose.prod.yml

Edit 2023-08-22: as of today Compose v2 is not supported by Ansible, it only works with v1. There’s ongoing work towards docker_compose_v2 module but it’s not available yet. In the meantime you can use shell as per @Tatiana’s answer

Leave a Comment

techhipbettruvabetnorabahisbahis forumueduedusedusedueduedusedusedusedusedus