首页 > 解决方案 > 在 Ansible playbook 中执行 docker-compose

问题描述

我有一个ansible-playbook.yml文件,我需要从内部执行docker-compose

- name: copy sql schema
  hosts: test-mysql
  gather_facts: no
  tasks:

    - name: Docker compose
      command: docker-compose -f {{ name }}_compose.yml up -d

但我总是得到错误:

fatal: [test-mysql]: FAILED! => {"changed": false, "cmd": "docker-compose Mick_compose.yml up -d", "failed": true, "msg": "[Errno 2] No such file or directory", "rc": 2}

有小费吗 ?谢谢


使用命令:-名称:确保 compose 服务已启动:

- name: Make sure compose service is up
   docker_compose:
                 ^ here

标签: ansible

解决方案


[Errno 2] 没有这样的文件或目录

实际上,Mick_compose.yml在启动命令的默认目录中没有这样的文件或目录。为了解决这个问题,我可以向您展示如何将命令模块中的 dir 更改为保存文件的正确模块。

但是我会让你自己发现(如果你真的想在这个解释之后这样做),因为当现有的 ansible 模块已经在做你需要的事情时,你不应该直接运行命令

- name: Make sure compose service is up
  docker_compose:
    project_src: /path/to/your/compose/project
    files:
      - "{{ name }}_compose.yml"
    state: present

这只是为了让您走上正轨,请查看上面的模块文档链接以获取有关可能参数的更多信息。


推荐阅读