gpt4 book ai didi

docker-compose - 如何在 Ansible 中运行临时 docker compose 命令?

转载 作者:行者123 更新时间:2023-12-04 04:33:32 26 4
gpt4 key购买 nike

我必须运行几个 docker-compose run我的 Phoenix Web 应用程序项目的命令。从终端我必须运行这个:
$ sudo docker-compose run web mix do deps.get, compile$ sudo docker-compose run web mix ecto.create$ sudo docker-compose run web mix ecto.migrate
虽然这很好用,但我想使用 Ansible 将其自动化。我很清楚有 码头服务使用 docker-compose API 的 Ansible 模块,我也知道 definition选项可以很容易地将 docker-compose.yml 中的配置隐蔽集成到我的剧本中。
我不知道的是如何确保在启动容器之前运行上面的命令。谁能帮我解决这个问题?

最佳答案

我遇到了与您类似的情况,找不到通过用于 Ansible 的 docker 专用模块运行 docker-compose run 命令的方法。但是我最终使用了 Ansible's shell module为我的目的而成功。在这里,我们有一些示例,适合您的情况。

一项一项,明确的方式

- name: Run mix deps.get and compile
shell: docker-compose run web mix do deps.get, compile
args:
chdir: /path/to/directory/having/your/docker-compose.yml
become: True # because you're using sudo

- name: Run mix ecto.create
shell: docker-compose run web mix ecto.create
args:
chdir: /path/to/directory/having/your/docker-compose.yml
become: True

- name: Run mix ecto.migrate
shell: docker-compose run web mix ecto.migrate
args:
chdir: /path/to/directory/having/your/docker-compose.yml
become: True

等效方式,但更短
- name: Run mix commands
shell: docker-compose run web mix "{{ item }}"
args:
chdir: /path/to/directory/having/your/docker-compose.yml
loop:
- "do deps.get, compile"
- "ecto.create"
- "ecto.migrate"
become: True

在启动 docker-compose.yml 中定义的其他容器之前运行这些命令文件,也许这些点的组合可以帮助:
  • 使用 docker 卷来持久化获取依赖、编译和 Ecto 命令的结果
  • 使用 depends_on docker-compose.yml 中的配置选项文件
  • 使用 service Ansible's docker_service module的参数在你的剧本中只运行一部分容器
  • 使用一次性容器与您的 docker-compose run命令,通过 --rm选项并可能使用 --no-deps选项
  • 在你的剧本中,执行你的 docker-compose run docker_service 之前的命令任务

  • 一些注意事项:
  • 在撰写此答案时,我正在使用 Ansible 2.5。
  • 我假设已经安装了 docker-compose 二进制文件,它工作正常并且可以在标准系统 PATH 上使用。在托管主机上。
  • docker-compose.yml文件已存在且路径为 /path/to/directory/having/your/docker-compose.yml ,如示例中使用的那样。也可以使用该文件路径的变量。

  • 就是这样!

    关于docker-compose - 如何在 Ansible 中运行临时 docker compose 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42626271/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com