我有一个通过Ansible在Docker容器中部署的Rails应用程序。到目前为止,我的应用程序包含三个容器:

  • Docker卷容器(使用docker volume create --name dbdata创建)
  • Postgres容器(带有volumes_from dbdata)
  • Rails应用程序容器(链接到postgres容器)

  • 我的部署手册正在运行,但是我必须通过SSH在服务器上运行docker volume create命令。我很想通过Ansible做到这一点,所以我可以将应用程序的新实例部署到一个空容器中。

    有没有办法通过Ansible运行docker volume create,还是有其他办法呢?我在文档中检查了Ansible Docker模块,但看起来它们尚不支持volume create。除非我想念什么?

    最佳答案

    这是一个使用command模块的选项。

    - hosts: localhost
      tasks:
        - name: check if myvolume exists
          command: docker volume inspect myvolume
          register: myvolume_exists
          failed_when: false
    
        - name: create myvolume
          command: docker volume create --name myvolume
          when: myvolume_exists|failed
    

    我们首先使用docker volume inspect检查该卷是否存在。我们将该任务的结果保存在变量myvolume_exists中,然后仅在inspect任务失败时创建卷。

    09-04 18:39
    查看更多