Heim > Backend-Entwicklung > Golang > Wie führt man Golang-Migrate-Datenbankmigrationen mit Docker Compose ohne „--network host' aus?

Wie führt man Golang-Migrate-Datenbankmigrationen mit Docker Compose ohne „--network host' aus?

Patricia Arquette
Freigeben: 2024-12-08 20:38:18
Original
723 Leute haben es durchsucht

How to Run Golang-Migrate Database Migrations with Docker Compose Without `--network host`?

Datenbank migrieren mit Golang-Migrate in Docker-Compose

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.

Migrationen in einem einzelnen Ordner ausführen

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
Nach dem Login kopieren

Um diese Syntax anzupassen docker-compose können wir den folgenden Ansatz verwenden:

Docker-Compose-Konfiguration hinzufügen

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:
Nach dem Login kopieren

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.

Herstellen einer Verbindung zu einer Datenbank in einem anderen Container

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"
Nach dem Login kopieren

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!

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