Estoy tratando de construir mi propia pila wordpress-nginx-php_fpm con docker-compose pero tengo un problema con el volumen con nombre y su inicialización.
Aquí está mi 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: {}
Como puede ver, tengo 2 volúmenes con nombre. No hay problema con “wp-db” porque solo se usa con el servicio “db”.
Mi problema es con el volumen “wp-files”, montado en 2 servicios (= contenedores)
- ¿Qué servicio copiará primero sus datos en el volumen mencionado?
- ¿El segundo contenedor sobrescribirá los datos puestos por el primero?
- ¿Cómo “inicializar” el volumen con nombre en algún lugar y simplemente usarlo (después) de los 2 contenedores donde está montado? Escuché sobre una bandera “nocopy”.
- ¿Estoy obligado a usar otras cosas (como un contenedor de datos) en lugar de un volumen con nombre?
Gracias. Nota: (todo está en el mismo host físico)
Esto es lo que pude encontrar como respuesta:
¿Qué servicio copiará primero sus datos en el volumen mencionado?
El contenedor que comienza primero (gracias a los volúmenes desde, depende de, …)
¿El segundo contenedor sobrescribirá los datos puestos por el primero?
No, una vez que se ha “inicializado” un volumen con nombre (lo que significa que ya no está vacío), sobrescribirá cada punto de montaje al que esté conectado.
¿Cómo “inicializar” el volumen con nombre en algún lugar y simplemente usarlo (después) de los 2 contenedores donde está montado? Escuché sobre una bandera “nocopy”.
De hecho, hay un indicador “nocopy”, como en la documentación de “docker run”, PERO no parece funcionar con otro indicador (“ro” o “rw”).
¿Estoy obligado a usar otras cosas (como un contenedor de datos) en lugar de un volumen con nombre?
Por lo tanto, no.
-
Puede usar ‘nocopy’, con otras banderas como “ro” y “rw”, pero debe separarlas con “,” en lugar de “:”. Por ejemplo, ‘tesstvol:/test:ro,nocopy’
– Andy
10 de julio de 2018 a las 22:46