我有一个Rails应用程序,我正通过Ansible部署在Docker容器中。到目前为止,我的应用程序包括三个容器:
docker volume create --name dbdata创建)volumes_from dbdata)我的部署剧本正在工作,但我必须通过SSH在服务器上运行docker volume create命令。我很想通过Ansible来做这件事,这样我就可以将这个应用程序的一个新实例部署到一个空容器上。
是否有一种通过Ansible运行docker volume create的方法,或者有其他方法来实现它?我检查了Ansible模块的文档,但看起来它们还不支持volume create。除非我遗漏了什么?
发布于 2016-01-27 21:33:40
这里有一个选项,使用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任务失败时创建卷。
发布于 2019-03-28 02:40:17
您可以使用Ansible自己的体积模块管理坞卷。新版本2.4。
示例:
- name: Create a volume
docker_volume:
name: volume_one
- name: Remove a volume
docker_volume:
name: volume_one
state: absent
- name: Create a volume with options
docker_volume:
name: volume_two
driver_options:
type: btrfs
device: /dev/sda2发布于 2017-01-23 13:32:03
现在,您可以使用-v参数创建命名的卷,从docker的手册页:
如果提供名称,Docker将根据该名称创建一个命名卷。
- name: Run mariadb
docker_container:
name: mariadb-container
image: mariadb
env:
MYSQL_ROOT_PASSWORD: "secret-password"
MYSQL_DATABASE: "db"
MYSQL_USER: "user"
MYSQL_PASSWORD: "password"
ports:
- "3306:3306"
volumes:
- mariadb-data:/var/lib/mysqlmariadb-data是一个命名卷,由docker自动创建:
$ docker volume inspect mariadb-data
[
{
"Name": "mariadb-data",
"Driver": "local",
"Mountpoint": "/var/lib/docker/volumes/mariadb-data/_data",
"Labels": null,
"Scope": "local"
}
]https://stackoverflow.com/questions/35047813
复制相似问题