Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menjalankan Golang-Migrate dengan Docker Compose dan Bekas Pangkalan Data Berasingan?

Bagaimana untuk Menjalankan Golang-Migrate dengan Docker Compose dan Bekas Pangkalan Data Berasingan?

Linda Hamilton
Linda Hamiltonasal
2024-12-06 13:06:14574semak imbas

How to Run Golang-Migrate with Docker Compose and a Separate Database Container?

Menjalankan Golang-Migrate dengan Docker Compose

Dokumentasi Golang-migrate menyediakan arahan untuk melaksanakan semua migrasi dalam direktori tertentu:

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

Walau bagaimanapun, arahan ini tidak serasi dengan sintaks docker-compose. Artikel ini akan menunjukkan cara mengubah suai perintah agar sesuai dengan sintaks baharu dan menyambung ke pangkalan data yang dijalankan dalam bekas lain.

Penyatuan Docker-Compose

Untuk menyepadukan golang-migrate dengan docker-compose, tambahkan yang 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 mencipta rangkaian bernama "baru" dan termasuk perkhidmatan "db" dan "hijrah". Perkhidmatan "db" ditakrifkan dengan pembolehubah persekitaran yang diperlukan untuk pangkalan data PostgreSQL.

Menyambung ke Pangkalan Data dalam Bekas Lain

Untuk menyambung ke pangkalan data yang berjalan dalam bekas lain, ubah suai rentetan sambungan dalam atribut "perintah" perkhidmatan "hijrah":

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

Dalam hubungan ini string:

  • mydbuser ialah nama pengguna untuk pangkalan data PostgreSQL
  • mydbpwd ialah kata laluan untuk pangkalan data PostgreSQL
  • pangkalan data ialah alias yang ditakrifkan dalam perkhidmatan "db"
  • 5432 ialah nombor port untuk PostgreSQL pangkalan data
  • mydbname ialah nama pangkalan data PostgreSQL

Dengan menggunakan alias "pangkalan data", anda boleh menyambung ke perkhidmatan "db" seolah-olah ia berjalan pada localhost.

Dengan pengubahsuaian ini, anda boleh berjaya menjalankan golang-migrate dengan docker-compose dan menyambung ke pangkalan data di tempat lain bekas.

Atas ialah kandungan terperinci Bagaimana untuk Menjalankan Golang-Migrate dengan Docker Compose dan Bekas Pangkalan Data Berasingan?. 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