Maison > développement back-end > Golang > le corps du texte

Comment exécuter une commande unique dans Docker Compose ?

Susan Sarandon
Libérer: 2024-11-16 05:20:03
original
397 Les gens l'ont consulté

How to Execute a One-Time Command in Docker Compose?

Exécuter une commande unique dans Docker Compose

Dans le contexte de Docker compose, vous recherchez une solution pour exécuter une commande spécifique ( ./my-project -setup) une seule fois, quels que soient les redémarrages ou les déploiements du conteneur. Ce besoin se pose dans les situations où l'initialisation ou la configuration des données est nécessaire.

Pour résoudre ce problème, envisagez d'implémenter un script de point d'entrée dans votre conteneur. Ce script se chargera de vérifier si la base de données a déjà été initialisée. Si ce n'est pas le cas, le script effectuera les étapes d'initialisation requises.

Il est crucial de noter que l'ordre de démarrage du conteneur n'est pas garanti, il est donc possible que le conteneur d'application démarre avant le conteneur de base de données. Pour tenir compte de cela, le script doit intégrer une logique pour gérer de telles occurrences.

Un exemple de cette approche peut être trouvé dans l'image officielle de WordPress (https://github.com/docker-library/wordpress/blob /df190dc9c5752fd09317d836bd2bdcd09ee379a5/apache/docker-entrypoint.sh#L146-L171). Le script tente de se connecter à la base de données et vérifie si une initialisation est nécessaire, en réessayant si la base de données n'est pas encore accessible.

Optimisation de la gestion des volumes

Dans votre composition Docker initiale fichier, vous avez utilisé un conteneur « données uniquement » pour attacher votre volume. Cependant, les versions modernes de Docker (1.9 et supérieures) offrent des fonctionnalités de gestion des volumes. Cela élimine le besoin de conteneurs de données uniquement séparés.

Vous pouvez simplifier votre fichier de composition Docker en supprimant le conteneur de données uniquement et en modifiant le service mongo comme suit :

mongo:
    image: mongo:latest
    volumes:
      - mongodata:/data/db
    ports:
      - "28001:27017"
    command: --smallfiles --rest --auth
Copier après la connexion

Cette configuration créera un volume nommé mongodata s'il n'existe pas déjà, ou réutilisera un volume existant portant ce nom. Vous pouvez gérer les volumes à l'aide des commandes docker volume ls pour le listing et docker volume rm pour le retrait.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal