Я немного путаюсь с функциональностью названных томов в файле docker compose, когда речь заходит о резервном копировании/восстановлении моего приложения.
Я на самом деле проверяю этот файл докеремента:
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
что очень просто.
Теперь я прочитал в этом разделе, что я должен использовать что-то вроде 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
. Таким образом, это еще сложнее использовать с резервным контейнером.
Итак, каковы лучшие практики в этом случае? Должен ли я использовать только один именованный том для всех моих контейнеров?