如何使用ansible运行docker-compose命令?

Tat*_*ana 5 deployment ansible docker docker-compose

在 ansible playbook 中,我需要运行 docker-compose 命令。我该怎么做?我需要运行命令:docker-compose -f docker-compose.yml -f docker-compose.prod.yml up

Tat*_*ana 15

最后我决定使用 shell 模块。我认为@pierre-b 的答案更正确,但无论如何:

- name: Run container
  become: True
  shell:
    cmd: "docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d"
    chdir: /mydir/
Run Code Online (Sandbox Code Playgroud)

  • “绝对”——一点也不。该模块依赖于 docker-py ,该模块未维护且已过时。不要使用跟不上步伐/没有良好社区支持的模块,除非您愿意在兼容性方面落后并不得不稍后重写。Ansible 社区最终会解决这个问题。 (10认同)
  • 当有模块为您完成这项工作时,您绝对应该避免使用 shell。现在您还必须管理幂等性(这是由模块自动完成的)。 (4认同)
  • @aehlke,感谢您指出这一点。显然,该模块仅支持 docker-compose 1x,[这里是链接](https://github.com/ansible-collections/community.docker/issues/676#issuecomment-1656146970) (3认同)

Pie*_* B. 9

您应该复制 Docker Compose 文件并使用以下docker_compose模块:

- 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
  docker_compose:
    project_src: /somewhere/yourproject
    files:
    - docker-compose.yml
    - docker-compose.prod.yml
Run Code Online (Sandbox Code Playgroud)