Wie führe ich einmalige Befehle in Docker Compose mit Entrypoint-Skripten aus?

Susan Sarandon
Freigeben: 2024-11-11 16:57:03
Original
514 Leute haben es durchsucht

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

So führen Sie einmalige Befehle in Docker Compose aus

Um eine Docker-Umgebung einzurichten, in der ein Befehl nur einmal ausgeführt werden muss, B. das Auffüllen einer Datenbank, ist ein empfohlener Ansatz die Verwendung eines Einstiegspunktskripts.

Entrypoint Skript

Erstellen Sie ein Einstiegspunktskript in Ihrem Container-Image, normalerweise mit dem Namen „entrypoint.sh“. Dieses Skript prüft, ob die Datenbankinitialisierung abgeschlossen wurde, und führt andernfalls die erforderlichen Aktionen aus.

Hier ist ein Beispiel für ein Einstiegspunktskript basierend auf dem offiziellen WordPress-Image:

#!/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 "$@"
Nach dem Login kopieren

Docker Compose-Konfiguration

Geben Sie in Ihrer docker-compose.yml-Datei das Einstiegspunktskript im Einstiegspunktschlüssel für den Dienst an, der erfordert eine Initialisierung wie folgt:

services:
  my_project:
    build: .
    entrypoint: ["./entrypoint.sh"]
    ...
Nach dem Login kopieren

Zusätzliche Hinweise

  • Wie in der Antwort erwähnt, ist die Verwendung von „Nur-Daten-Containern“ für die Docker-Volume-Verwaltung sinnvoll veraltet seit Docker 1.9. Stattdessen können Sie Volumes mithilfe des Volumes-Schlüssels direkt an Dienste anhängen.
  • Das Einstiegspunktskript sollte die Möglichkeit berücksichtigen, dass der Datenbankcontainer nach dem Anwendungscontainer gestartet werden kann.
  • Docker Compose folgt einem strengen Prinzip Bestellung bei Beginn der Dienste. Der my_project-Dienst wird erst gestartet, wenn seine Abhängigkeiten (Mongo und Mongodata) bereit sind.

Das obige ist der detaillierte Inhalt vonWie führe ich einmalige Befehle in Docker Compose mit Entrypoint-Skripten aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage