0
votes

Docker-Compose crée un nouveau volume après la mise en route (les données sont perdues)

J'utilise docker-composition pour créer un instance redmine .

Ceci est mon docker-compose.yml , qui est basé sur la documentation officielle: xxx

maintenant, chaque fois que je cours docker-compose puis docker-composant up , toutes mes données (base de données et fichiers) sont supprimés, même si je n'utilise pas -v drapeau, qui est nécessaire pour supprimer des volumes.

Aussi lorsque je exécute docker volumes LS , il semble qu'un nouveau volume est créé après chaque docker-compose .

est-ce normal?

Comment puis-je utiliser ces volumes précédents créés par Docker et avoir un très long nom de hasch?


1 commentaires

Je suppose que c'est par conception. Docker-Compose Down est conçu pour nettoyer les ressources. Et probablement Docker n'a aucun moyen de dire qu'il doit réutiliser le volume sur le prochain docker-composant . Si vous voulez arrêter le conteneur, vous pouvez utiliser docker-composez stop à la place. Ou peut-être envisager de donner un nom de volume un nom de sorte que Docker-Compose sait de la réutiliser.


3 Réponses :


1
votes

Vous n'avez pas ajouté de volume pour la base de données. Ainsi, les données de base de données sont perdues chaque fois que vous faites docker-compose down code>. Si vous souhaitez conserver des données, vous pouvez ajouter du volume comme celui-ci:

  version: '3.1'

    services:
      redmine:
        image: redmine:4.0.4
        restart: always
        ports:
          - 8890:3000
        environment:
          REDMINE_DB_MYSQL: db
          REDMINE_DB_PASSWORD: password

      db:
        image: mysql:5.7
        restart: always
        environment:
          MYSQL_ROOT_PASSWORD: password
          MYSQL_DATABASE: redmine
        volumes:
          - db_data:/var/lib/mysql

volumes:
    db_data: {}


0 commentaires

0
votes

Vous ne persistez pas les données de conteneur MySQL sur votre hôte. Donc oui, une nouvelle instance fraîche est créée. C'est le comportement réel du docker. Veuillez lire la documentation MySQL "Où stocker des données" chez MySQL Docker Hub Repo


0 commentaires

0
votes

Vous devez attribuer des paramètres de volume à l'aide de ce

Premièrement, vous devez supprimer toutes les données OLLLES MYSQL à l'aide de P>

docker-compose down -v


0 commentaires