Maison > développement back-end > Golang > Comment exécuter des commandes uniques dans Docker Compose avec des scripts Entrypoint ?

Comment exécuter des commandes uniques dans Docker Compose avec des scripts Entrypoint ?

Susan Sarandon
Libérer: 2024-11-11 16:57:03
original
554 Les gens l'ont consulté

How to Execute One-Time Commands in Docker Compose with Entrypoint Scripts?

Comment exécuter des commandes uniques dans Docker Compose

Pour configurer un environnement Docker dans lequel une commande ne doit être exécutée qu'une seule fois, comme le remplissage d'une base de données, une approche recommandée consiste à utiliser un script de point d'entrée.

Entrypoint Script

Créez un script de point d'entrée dans votre image de conteneur, généralement nommé Entrypoint.sh. Ce script vérifiera si l'initialisation de la base de données est terminée et, dans le cas contraire, effectuera les actions nécessaires.

Voici un exemple de script de point d'entrée basé sur l'image officielle de WordPress :

#!/bin/bash

set -e

# Function to check if database initialization is needed
is_init_needed() {
  # Insert database initialization check logic here
  return 0
}

# Check if initialization is needed
if is_init_needed; then
  # Perform database initialization
  echo "Initializing database..."
  /usr/bin/mysql -u "root" -p"$MYSQL_ROOT_PASSWORD" -h "mysql" < /usr/local/init.sql
  echo "Database initialized successfully."
fi

# Start the application
exec "$@"
Copier après la connexion

Configuration de Docker Compose

Dans votre fichier docker-compose.yml, spécifiez le script de point d'entrée dans la clé de point d'entrée du service qui nécessite une initialisation, comme ceci :

services:
  my_project:
    build: .
    entrypoint: ["./entrypoint.sh"]
    ...
Copier après la connexion

Notes supplémentaires

  • Comme mentionné dans la réponse, l'utilisation de "conteneurs de données uniquement" pour la gestion des volumes Docker est obsolète depuis Docker 1.9. Au lieu de cela, vous pouvez directement attacher des volumes aux services à l'aide de la clé de volumes.
  • Le script de point d'entrée doit tenir compte de la possibilité que le conteneur de base de données démarre après le conteneur d'application.
  • Docker Compose suit un strict commande lors du démarrage des services. Le service my_project ne démarrera pas tant que ses dépendances (mongo et mongodata) ne seront pas prêtes.

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