Exécuter des commandes à exécution unique dans Docker Compose
Afin de déployer efficacement un serveur Web Go à l'aide de Docker Compose, vous pouvez rencontrer un obstacle lorsque vous tentez d'exécuter une commande une seule fois pendant le déploiement. Cette commande spécifique, ./my-project -setup, doit être exécutée uniquement après la compilation de votre projet pour ajouter des informations essentielles à votre base de données.
Docker Compose ne fournit pas de solution directe à ce besoin, mais vous pouvez le contourner en introduisant un script de point d'entrée dans votre conteneur. Dans ce script, vous pouvez implémenter une vérification pour vérifier si la base de données a été initialisée, et sinon, procéder aux étapes requises.
Il est important de noter que l'ordre dans lequel les conteneurs sont démarrés dans Docker Compose est pas cohérent. Cela signifie que le conteneur d'application peut être démarré avant le conteneur de base de données, ce qui peut entraîner des inexactitudes dans la base de données. Le script du point d'entrée doit considérer cette possibilité et s'ajuster en conséquence.
Par exemple, vous pouvez vous inspirer de l'approche de l'image officielle WordPress. L'image utilise un script de point d'entrée qui tente d'établir une connexion à la base de données et effectue les procédures d'initialisation nécessaires en fonction de l'état de la connexion : https://github.com/docker-library/wordpress/blob/df190dc9c5752fd09317d836bd2bdcd09ee379a5/apache/docker-entrypoint.sh#L146-L171.
De plus, vous pouvez simplifier votre configuration Docker Compose en éliminant l'utilisation de un "conteneur de données uniquement" pour montage en volume. Depuis Docker 1.9, Docker prend en charge la gestion des volumes, y compris la dénomination des volumes. Cela vous permet d'exclure le conteneur de données uniquement et de modifier la configuration du service Mongo en conséquence :
mongo: image: mongo:latest volumes: - mongodata:/data/db ports: - "28001:27017" command: --smallfiles --rest --auth
Cette modification créera ou réutilisera un volume nommé "mongodata". Pour répertorier ou supprimer des volumes, utilisez les commandes docker volume ls et docker volume rm
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!