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.
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.
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:
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!