我有一个Rails应用程序,我通过Ansible在Docker容器中部署 . 我的应用包括目前为止的三个容器:
-
Docker卷容器(使用
docker volume create --name dbdata
创建) -
一个Postgres容器(带
volumes_from
dbdata) -
Rails app容器(链接到postgres容器)
我的部署playbook正在运行,但我不得不通过SSH在服务器上运行 docker volume create
命令 . 我喜欢通过Ansible这样做,所以我可以将一个新的应用程序实例部署到一个空容器中 .
有没有办法通过Ansible运行 docker volume create
,还是有其他方法可以做到这一点?我检查了Ansible Docker模块的文档,但看起来它们还不支持 volume create
. 除非我错过了什么?
3 回答
这是一个选项,使用
command
模块 .我们首先使用
docker volume inspect
检查卷是否存在 . 我们将该任务的结果保存在变量myvolume_exists
中,然后我们只在inspect
任务失败时创建该卷 .您现在可以使用
-v
参数从docker run的手册页创建命名卷:mariadb-data
是由docker自动创建的命名卷:您可以使用Ansible自己的docker_volume模块管理docker卷 . 版本2.4中的新功能 .