ホームページ >バックエンド開発 >Golang >「--network host」を使用せずに Docker Compose を使用して Golang-Migrate データベース移行を実行する方法は?

「--network host」を使用せずに Docker Compose を使用して Golang-Migrate データベース移行を実行する方法は?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-08 20:38:18704ブラウズ

How to Run Golang-Migrate Database Migrations with Docker Compose Without `--network host`?

Docker-Compose で Golang-Migrate を使用したデータベースの移行

Docker-compose では、「--network」オプションの使用を妨げる新しい構文が導入されました。この環境で golang-merge を使用して移行を実行することについて疑問が生じます。この記事では、docker-compose を使用して golang-merge を設定し、別のコンテナーのデータベースに接続する方法について説明します。

単一フォルダーでの移行の実行

golang で説明されている次のコマンド- 移行ドキュメント。すべての移行を 1 つのフォルダーで実行するために使用できます。

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.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」サービスはデータベースとして機能し、「移行」サービスは移行の実行に使用されます。

別のコンテナ内のデータベースに接続

「--network host」を使用する代わりに" オプションを使用すると、ネットワークを確立し、そのネットワーク内のエイリアス「データベース」を介してデータベースに接続します。これにより、「移行」サービスは、あたかもローカルホスト上で実行されているかのように「db」サービスと対話できるようになります。

「コマンド」セクションで使用される接続文字列は、次の接続方法を反映しています:

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

これで、docker-compose up を実行すると、移行が正常に実行され、データベース コンテナーに接続されるはずです。

以上が「--network host」を使用せずに Docker Compose を使用して Golang-Migrate データベース移行を実行する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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