Golang-Migrate のドキュメントには、特定のディレクトリですべての移行を実行するためのコマンドが記載されています:
docker run -v {{ migration dir }}:/migrations --network host migrate/migrate -path=/migrations/ -database postgres://localhost:5432/database up 2
ただし、このコマンドは docker-compose の構文と互換性がありません。この記事では、新しい構文に合わせてコマンドを変更し、別のコンテナーで実行されているデータベースに接続する方法を説明します。
golang-mite を 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:
この構成では、「new」という名前のネットワークが作成され、 「db」サービスと「移行」サービス。 「db」サービスは、PostgreSQL データベースに必要な環境変数を使用して定義されます。
別のコンテナで実行されているデータベースに接続するには、接続文字列を変更します「移行」サービスの「コマンド」属性内:
postgres://mydbuser:mydbpwd@database:5432/mydbname?sslmode=disable
この接続ではstring:
エイリアス「database」を使用すると、あたかもローカルホスト上で実行されているかのように「db」サービスに接続できます。
これらの変更により、 docker-compose で golang-mite を正常に実行し、別のコンテナーのデータベースに接続できます。
以上がDocker Compose と別のデータベース コンテナーを使用して Golang-Migrate を実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。