Docker-Compose hat eine neue Syntax eingeführt, die von der Verwendung der Option „--network“ abrät wirft Fragen zur Durchführung von Migrationen mit golang-migrate in dieser Umgebung auf. In diesem Artikel wird erläutert, wie Sie golang-migrate mit Docker-Compose einrichten und eine Verbindung zu einer Datenbank in einem anderen Container herstellen.
Der folgende Befehl, wie im Golang angegeben -migrate-Dokumentation, kann verwendet werden, um alle Migrationen in einem Ordner auszuführen:
docker run -v migration-dir:/migrations --network host migrate/migrate -path=/migrations/ -database postgres://localhost:5432/database up 2
Um diese Syntax anzupassen docker-compose können wir den folgenden Ansatz verwenden:
Fügen Sie die folgende Konfiguration zu Ihrer docker-compose.yml-Datei hinzu:
db: image: postgres networks: new: aliases: - database environment: POSTGRES_DB: mydbname POSTGRES_USER: mydbuser POSTGRES_PASSWORD: mydbpwd ports: - "5432" migrate: image: migrate/migrate networks: - new volumes: - .:/migrations command: ["-path", "/migrations", "-database", "postgres://mydbuser:mydbpwd@database:5432/mydbname?sslmode=disable", "up", "3"] links: - db networks: new:
Diese Konfiguration richtet ein neues Netzwerk namens „new“ ein und fügt ihm sowohl die Dienste „db“ als auch „migrate“ hinzu. Der „db“-Dienst dient als Datenbank, während der „migrate“-Dienst zum Ausführen von Migrationen verwendet wird.
Anstelle der Verwendung des „--network host "-Option richten wir ein Netzwerk ein und stellen innerhalb dieses Netzwerks eine Verbindung zur Datenbank über ihren Alias „Datenbank" her. Dadurch kann der Dienst „migrate“ mit dem Dienst „db“ interagieren, als ob er auf localhost ausgeführt würde.
Die im Abschnitt „Befehl“ verwendete Verbindungszeichenfolge spiegelt diese Verbindungsmethode wider:
"postgres://mydbuser:mydbpwd@database:5432/mydbname?sslmode=disable"
Jetzt sollte die Ausführung von docker-compose up Migrationen erfolgreich ausführen und eine Verbindung zum Datenbankcontainer herstellen.
Das obige ist der detaillierte Inhalt vonWie führt man Golang-Migrate-Datenbankmigrationen mit Docker Compose ohne „--network host' aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!