Golang-Migrate のための Docker-Compose 統合
Golang-Migrate はデータベース移行管理を容易にします。ディレクトリからすべての移行を実行するには、次のコマンドが推奨されます:
docker run -v {{ migration dir }}:/migrations --network host migrate/migrate -path=/migrations/ -database postgres://localhost:5432/database up 2
ただし、このコマンドは、更新された docker-compose の構文と一致しません。この記事では、新しい docker-compose 構文に合わせてこのコマンドを変更し、別のコンテナー内のデータベースに接続する方法について説明します。
新しい Docker-Compose 構文のソリューション
次の docker-compose.yml スニペットは、目的の機能を実現します:
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:
代わりに--network host オプションを使用すると、new という名前のカスタム ネットワークが定義されます。このネットワーク内のサービスは、定義されたエイリアスを介して相互にアクセスできます (データベース エイリアスを介して db サービスにアクセスするなど)。これにより、接続文字列で localhost の代わりにエイリアスを使用できるようになります。
外部データベースへの接続
この接続文字列は、外部データベースへの接続を確立するために使用されます。別のコンテナーで実行されているデータベース:
"postgres://mydbuser:mydbpwd@database:5432/mydbname?sslmode=disable"
この例では、データベース エイリアスは外部データベースを表しますコンテナ。
以上がデータベース移行のために Golang-Migrate を Docker Compose と統合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。