tag run name library imagenes hub example dockers container change docker docker-compose

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: