Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menjalankan Migrasi Pangkalan Data Golang-Migrate dengan Docker Compose Tanpa `--network host`?

Bagaimana untuk Menjalankan Migrasi Pangkalan Data Golang-Migrate dengan Docker Compose Tanpa `--network host`?

Patricia Arquette
Patricia Arquetteasal
2024-12-08 20:38:18703semak imbas

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

Memindahkan Pangkalan Data Menggunakan Golang-Migrate dalam Docker-Compose

Docker-compose telah memperkenalkan sintaks baharu yang tidak menggalakkan penggunaan pilihan "--network", yang menimbulkan persoalan tentang menjalankan migrasi menggunakan golang-migrate dalam persekitaran ini. Artikel ini meneroka cara menyediakan golang-migrate dengan docker-compose dan menyambung ke pangkalan data dalam bekas lain.

Menjalankan Migrasi dalam Folder Tunggal

Arahan berikut, seperti yang dinyatakan dalam golang -dokumentasi migrasi, boleh digunakan untuk menjalankan semua migrasi dalam satu folder:

docker run -v migration-dir:/migrations --network host migrate/migrate -path=/migrations/ -database postgres://localhost:5432/database up 2

Untuk menyesuaikan sintaks ini kepada docker-compose, kita boleh menggunakan pendekatan berikut:

Menambah Konfigurasi Docker-Compose

Tambah konfigurasi berikut pada fail docker-compose.yml anda:

    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:

Konfigurasi ini menyediakan rangkaian baharu yang dipanggil "baharu" dan menambah kedua-dua perkhidmatan "db" dan "hijrah" kepadanya. Perkhidmatan "db" berfungsi sebagai pangkalan data, manakala perkhidmatan "migrate" digunakan untuk menjalankan migrasi.

Menyambung ke Pangkalan Data dalam Bekas Lain

Daripada menggunakan "--network host " pilihan, kami mewujudkan rangkaian dan menyambung ke pangkalan data melalui aliasnya, "pangkalan data," dalam rangkaian itu. Ini membolehkan perkhidmatan "hijrah" berinteraksi dengan perkhidmatan "db" seolah-olah ia berjalan pada localhost.

Rentetan sambungan yang digunakan dalam bahagian "perintah" mencerminkan kaedah sambungan ini:

"postgres://mydbuser:mydbpwd@database:5432/mydbname?sslmode=disable"

Kini, menjalankan docker-compose akan berjaya melaksanakan migrasi dan menyambung ke bekas pangkalan data.

Atas ialah kandungan terperinci Bagaimana untuk Menjalankan Migrasi Pangkalan Data Golang-Migrate dengan Docker Compose Tanpa `--network host`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn