Я пытаюсь создать свой собственный стек 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».
Действительно, есть флаг «nocopy», как в документации «Docker Run», НО, похоже, не работает с другим флагом («ro» или «rw»).
Я обязан использовать другие вещи (например, контейнер данных) вместо именованных
объем?
Поэтому нет.
Других решений пока нет …