ホームページ >バックエンド開発 >Golang >Docker Compose と別のデータベース コンテナーを使用して Golang-Migrate を実行するにはどうすればよいですか?

Docker Compose と別のデータベース コンテナーを使用して Golang-Migrate を実行するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-06 13:06:14573ブラウズ

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

Docker Compose を使用した Golang-Migrate の実行

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 の統合

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:

  • mydbuser は PostgreSQL データベースのユーザー名です
  • mydbpwd は PostgreSQL データベースのパスワードです
  • database は「db」サービスで定義されたエイリアスです
  • 5432 は PostgreSQL のポート番号です。 Database
  • mydbname は PostgreSQL データベースの名前です

エイリアス「database」を使用すると、あたかもローカルホスト上で実行されているかのように「db」サービスに接続できます。

これらの変更により、 docker-compose で golang-mite を正常に実行し、別のコンテナーのデータベースに接続できます。

以上がDocker Compose と別のデータベース コンテナーを使用して Golang-Migrate を実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。