Как инициализировать именованный том, общий для нескольких контейнеров, с помощью docker-compose

Я пытаюсь создать свой собственный стек wordpress-nginx-php_fpm с помощью docker-compose, но у меня возникла проблема с named-volume и его инициализацией.

Вот мой docker-compose.yml:

version: '2'
services:

db: #https://hub.docker.com/_/mysql/
image: mysql
restart: always
volumes:
- "wp-db:/var/lib/mysql:rw"- env_file:
- "./conf/db/mysql.env"networks:
- back

nginx: #https://hub.docker.com/_/nginx/
image: nginx
restart: always
volumes:
- "wp-files:/usr/share/nginx/html"- "./conf/nginx:/nginx:ro"- "./conf/tools:/tools:ro"networks:
- front
- back
ports:
- "8080:80"environment:
- "PHP_FPM_HOST=php-wp:9000"- "PHP_FPM_ROOT_DIR=/var/www/html"command: "bash /tools/wait-for-it.sh php-wp:9000 -t 30 -- bash /tools/detemplatize-it.sh /nginx/nginx.template:/nginx.conf -- nginx -c /nginx.conf"
php-wp: #https://hub.docker.com/_/wordpress/
image: "wordpress:fpm"restart: always
volumes:
- "wp-files:/var/www/html"- "./conf/tools:/tools:ro"env_file:
- "conf/wp/wordpress.env"networks:
- back
command: "bash /tools/wait-for-it.sh db:3306 -t 30 -- php-fpm -F"
networks:
front: {}
back: {}

volumes:
wp-files: {}
wp-db: {}

Как видите, у меня есть 2 именованных тома. Нет проблем с «wp-db», потому что он используется только с сервисом «db».

Моя проблема с томом «wp-files», смонтированным в 2 сервисах (= контейнеры)

  • Какой сервис сначала скопирует свои данные в указанный том?
  • Будет ли второй контейнер перезаписывать данные, помещенные первым?
  • Как «инициализировать» указанный том где-то и просто использовать его (после) 2-х контейнеров, где он смонтирован? Я слышал о флаге «nocopy».
  • Обязан ли я использовать другие вещи (например, контейнер данных) вместо именованного тома?

Спасибо.
Примечание: (все находится на одном физическом хосте)

4

Решение

Вот что я мог найти в качестве ответа:

Какой сервис сначала скопирует свои данные в указанный том?

Контейнер, который запускается первым (благодаря объемам от, зависит от …)

Будет ли второй контейнер перезаписывать данные, помещенные первым?

Нет, после того, как именованный том будет «инициализирован» (значит, больше не пуст), он будет перезаписывать каждую точку монтирования, к которой он подключен.

Как «инициализировать» названный том где-то и просто использовать его (после)
2 контейнера, где он установлен? Я слышал о флаге «nocopy».

Действительно, есть флаг «nocopy», как в документации «Docker Run», НО, похоже, не работает с другим флагом («ro» или «rw»).

Я обязан использовать другие вещи (например, контейнер данных) вместо именованных
объем?

Поэтому нет.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]