run - dockers container download
Docker Compose: comparta el volumen con nombre entre varios contenedores (2)
Esto lo resuelve sin usar volúmenes con nombre:
volumes:
- ./appdata:/appdata
Entonces, parece que:
services:
nginx:
build: ./nginx/
ports:
- 80:80
links:
- php
volumes:
- ./appdata:/appdata
php:
build: ./php/
expose:
- 9000
volumes:
- ./appdata:/appdata
Estoy usando docker-compose y v3. Estoy tratando de montar un volumen en la ventana acoplable:
./appdata:/appdata
Me gustaría tener esto como un volumen y luego hacer referencia a ese volumen desde múltiples contenedores.
La
referencia de configuración de volumen
solo muestra
data-volume:
como un volumen con nombre, sin valor, por lo que no se parece a lo anterior.
services:
nginx:
build: ./nginx/
ports:
- 80:80
links:
- php
volumes:
- app-volume
php:
build: ./php/
expose:
- 9000
volumes:
- app-volume
volumes:
app-volume: ./appdata:/appdata
Esto me da:
ERROR: en el archivo ''./docker-compose.yml'', el volumen ''app-volume'' debe ser una asignación, no una cadena.
Obviamente, sé que necesito cambiar el par clave / valor de
volumes
, pero no estoy seguro de
cómo
cambiar esto para poder compartir un volumen entre los servicios.
También he revisado
volumes_from
pero esto efectivamente solo permite la herencia de otros contenedores.
He visto a alguien usar
volumes_from
en otro contenedor que contiene el mapeo que desean, pero con el
command: true
configurado para que el contenedor nunca se ejecute, lo que para mí parece un truco.
¿Cómo puedo hacer esto?
Tenga en cuenta que tengo el siguiente trabajo:
nginx:
volumes:
- ./appdata:/appdata
php:
volumes:
- ./appdata:/appdata
Pero eso es solo duplicación y es algo que espero que un volumen con nombre pueda ayudarme a evitar :-)
Los volúmenes nombrados se pueden compartir entre contenedores de la siguiente manera:
services:
nginx:
build: ./nginx/
ports:
- 80:80
links:
- php
volumes:
- app-volume: location_in_the_container
php:
build: ./php/
expose:
- 9000
volumes:
- app-volume: location_in_the_container
volumes:
app-volume:
Aquí hay una configuración de ejemplo que uso para una mejor comprensión.
Estoy exponiendo los archivos estáticos generados desde mi contenedor
web
a un volumen llamado
static-content
que luego es leído y servido por el contenedor
nginx
:
services:
nginx:
container_name: nginx
build: ./nginx/
volumes:
- static-content:/usr/src/app
web:
container_name: web
env_file: .env
volumes:
- static-content:/usr/src/app/public
environment:
- NODE_ENV=production
command: npm run package
volumes:
static-content: