【发布时间】:2016-07-11 03:16:00
【问题描述】:
我对 docker compose 文件中命名卷的功能有点困惑,特别是在备份/恢复我的应用程序时。
我实际上正在测试这个 dockercompose 文件:
version: '2'
services:
django:
build:
context: "{{ build_dir }}/docker/django"
depends_on:
- db
environment:
[...]
volumes:
- code:/data/code
- www:/var/www
- conf:/data/conf
networks:
- front
- db
expose:
- "8080"
entrypoint: "/init"
db:
build:
context: "{{ build_dir }}/docker/postgres"
environment:
[...]
volumes:
- data:/var/lib/postgresql/data
networks:
- db
volumes:
data:
www:
code:
conf:
networks:
front:
external:
name: "proxy_nw"
正如文档所述,我尝试使用命名卷而不是仅数据容器。但是我应该如何备份我的数据?
如果使用仅数据容器,我会做一个docker run --rm --volume-from DOC backup_container save,这真的很容易。
现在我读到in this topic 我应该使用类似docker run --rm --volume data --volume www --volume code --volume conf backup_container save 的东西。这并不是那么简单,因为我有许多具有不同类型和卷名称的应用程序,因此这意味着我保存数据的命令对于每个应用程序都必须不同。它使自动化过程复杂化。
编辑:其实这个语法
docker run --volume data --volume www container_image my_command 不正确。
它需要容器内的挂载点,所以它会是
docker run --volume data:/somewhere --volume www:/somewhereelse container_image my_command。
因此,与备份容器一起使用会更加复杂。
那么,在这种情况下,最佳做法是什么? 我应该为所有容器只使用一个命名卷吗?
【问题讨论】:
-
实际上将所有内容安装在同一卷中是没有意义的,因为卷中的所有内容都会被弄乱(昨天很晚)。
标签: backup docker-compose