Die Dokumentation von Golang-migrate stellt einen Befehl zum Ausführen aller Migrationen in einem bestimmten Verzeichnis bereit:
docker run -v {{ migration dir }}:/migrations --network host migrate/migrate -path=/migrations/ -database postgres://localhost:5432/database up 2
Dieser Befehl ist jedoch nicht mit der Syntax von Docker-Compose kompatibel. In diesem Artikel wird gezeigt, wie Sie den Befehl ändern, um ihn an die neue Syntax anzupassen und eine Verbindung zu einer Datenbank herzustellen, die in einem anderen Container ausgeführt wird.
Um golang-migrate mit Docker-Compose zu integrieren, Fügen Sie Folgendes 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 erstellt ein Netzwerk mit dem Namen „new“ und enthält „db“ und Dienste „migrieren“. Der „db“-Dienst wird mit den erforderlichen Umgebungsvariablen für eine PostgreSQL-Datenbank definiert.
Um eine Verbindung zu einer Datenbank herzustellen, die in einem anderen Container ausgeführt wird, ändern Sie die Verbindungszeichenfolge im Attribut „command“ des Dienstes „migrate“:
postgres://mydbuser:mydbpwd@database:5432/mydbname?sslmode=disable
In diesem Zusammenhang string:
Durch die Verwendung des Alias „database“ können Sie eine Verbindung zum „db“-Dienst herstellen, als ob er auf localhost ausgeführt würde.
Mit diesen Änderungen können Sie golang-migrate erfolgreich mit Docker-Compose ausführen und eine Verbindung zu einer Datenbank in einem anderen Container herstellen.
Das obige ist der detaillierte Inhalt vonWie führe ich Golang-Migrate mit Docker Compose und einem separaten Datenbankcontainer aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!