1 votes

Construire une nouvelle image, perdre les anciennes données volumineuses ?

Dans mon fichier docker compose, je spécifie deux services : phpant (une image personnalisée dérivée de debian avec PHP compilé et postfix en cours d'exécution pour que PHP puisse réellement envoyer des e-mails) et un service mysqldb qui tire les dernières informations du hub docker.

Dans le service phpant, je définis un volume :

volumes:
   - "/var/www/html/config/"

Après l'installation, nous écrivons les fichiers de configuration dans ce dossier. Nous utilisons un volume parce que nous voulons que les données de configuration persistent même si nous déployons une nouvelle image / mise à jour.

Cependant, lorsque nous poussons une nouvelle image, les fichiers de configuration sont perdus, et ce répertoire se retrouve vide.

Qu'est-ce que j'ai fait de mal ? Comment faire pour que le volume de données persiste même après avoir mis à jour l'image docker pour ce service ?

Note : L'image Wordpress semble faire cela correctement, c'est là que j'ai eu l'idée en premier lieu. J'ai essayé d'imiter ce qu'ils ont fait, mais clairement, j'ai sauté / manqué une étape.

1voto

Michael Hampton Points 232226

Vous avez spécifié sólo un chemin dans le conteneur pour votre volume. Dans cette configuration, Docker crée un nouveau volume à chaque fois que le conteneur est recréé.

Si vous souhaitez que les données du volume soient persistantes, vous devez spécifier un chemin accessible à l'hôte du conteneur où les données du volume peuvent être stockées. Par exemple, par rapport à votre docker-compose.yml :

volumes:
  - ./config:/var/www/html/config

をご覧ください。 documentation pour d'autres façons de configurer les volumes.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X