57 votes

docker-compose volumes_from équivalent à la version 3

Je suis en train de créer un Nginx/PHP FPM programme d'installation avec panneau de composer et je suis d'avoir des problèmes avec la version 3 volumes de la syntaxe de/changements.

Mon Dockerfile:

FROM php:7-fpm
VOLUME /var/www/html

Mon docker-compose.yml:

version: "3"
services:
  php:
    build: .
    volumes:
      - ./html:/var/www/html
  web:
    image: nginx
    links:
      - php
    ports:
      - "8888:80"
    volumes:
      - php:/var/www/html
      - ./default.conf:/etc/nginx/conf.d/default.conf
volumes:
  php:

Quand j'ai ajouter un index.php le fichier en ./html,, je peux afficher en allant dans http://localhost:8888mais tout les fichiers statiques (comme CSS) renvoyer une 404 parce que Nginx ne peut pas trouver ceux dans son conteneur (/var/www/html est vide sur la nginx conteneur). Avec la version 3 docker composer des fichiers n'ont pas d' volumes_from plus, ce qui est essentiellement ce que j'essaie de reproduire.

Comment puis-je obtenir que cela fonctionne avec la version 3?

43voto

Bukharov Sergey Points 3831

Pour l'utilisation de "Nommé volumes de" pour le partage de fichiers entre les conteneurs, vous devez définir l'

1) volumes: section sur le niveau supérieur de fichier yml et de définir un nom de volume

volumes:
  php:

2) définir volume section sur le premier conteneur comme vous l'avez fait (Où l'action va monter)

web:
    volumes:
      - php:/var/www/html #<container_name>:<mount_point>

3) définir volume section sur la deuxième récipient (Partage de montage à partir de)

php:
  volumes:
    - php:/var/www/html

4) (en option) Si vous avez besoin de stocker des données de volume sur l'ordinateur hôte, vous pouvez utiliser locales persistent docker plugin. Vous pouvez spécifier le panneau de volume conducteur et le chemin où les données seront stockées.

volumes:
  php:
    driver: local-persist
    driver_opts:
      mountpoint: /path/on/host/machine/

Dans votre cas, vous avez oublié de définir un nom de volume pour php conteneur. Il suffit de remplacer

  php:
    build: .
    volumes:
      - ./html:/var/www/html

pour

  php:
    build: .
    volumes:
      - php:/var/www/html

et l'utilisation Locales Persistent Docker Plugin

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X