我有一个Rails应用程序,我通过Ansible在Docker容器中部署.我的应用包括目前为止的三个容器:
docker volume create --name dbdata)volumes_fromdbdata)我的部署手册正在运行,但我必须docker volume create通过SSH在服务器上运行该命令.我喜欢通过Ansible这样做,所以我可以将一个新的应用程序实例部署到一个空容器中.
有没有办法docker volume create通过Ansible 运行,还是有其他方法可以做到这一点?我检查了Ansible Docker模块的文档,但它看起来并不像它们支持的那样volume create.除非我错过了什么?
lar*_*sks 10
这是使用该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
Run Code Online (Sandbox Code Playgroud)
我们首先通过使用检查卷是否存在docker volume inspect.我们将该任务的结果保存在变量中myvolume_exists,然后我们只在任务失败时创建卷inspect.
现在,您可以使用-v参数来创建命名卷,从 docker run 的手册页:
如果您提供名称,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/mysql
Run Code Online (Sandbox Code Playgroud)
mariadb-data是由 docker 自动创建的命名卷:
$ docker volume inspect mariadb-data
[
{
"Name": "mariadb-data",
"Driver": "local",
"Mountpoint": "/var/lib/docker/volumes/mariadb-data/_data",
"Labels": null,
"Scope": "local"
}
]
Run Code Online (Sandbox Code Playgroud)
您可以使用 Ansible 自己的docker_volume模块管理 docker 卷。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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3587 次 |
| 最近记录: |