ホームページ >Java >Docker Compose + Spring Boot + Postgres 接続

Docker Compose + Spring Boot + Postgres 接続

WBOY
WBOY転載
2024-02-11 15:39:09945ブラウズ

php エディター Xigua は本日、Docker Compose を使用して Spring Boot と Postgres を接続する方法に関するチュートリアルを提供します。 Docker Compose はマルチコンテナ Docker アプリケーションを定義して実行するためのツールであり、Spring Boot は Java アプリケーションを構築するためのフレームワークであり、Postgres は強力なリレーショナル データベースです。これら 3 つを組み合わせて使用​​することで、Spring Boot アプリケーションと Postgres データベースを含む開発環境を簡単に構築できます。このチュートリアルでは、アプリケーションの開発をすぐに開始できるように、3 つすべてを構成して接続する方法を段階的に学習します。

質問の内容

Postgres データベースで動作する Java Spring Boot アプリケーションがあります。どちらにも Docker を使用したいと考えています。最初は Postgres を Docker に入れて、docker-compose.yml ファイルを次のように定義しました。 リーリー

次に、コマンド

sudo dockerd および sudo docker-compose -f docker-compose.yml up を発行すると、データベースが起動されます。たとえば、pgAdmin を使用し、サーバーとして localhost を使用し、ポート 5432 を使用して接続できます。次に、Spring Boot アプリケーションでは、次のプロパティが application.properties ファイルで定義されています。 リーリー

この時点で、Spring Boot アプリケーションを Spring Suite を通じてローカルで実行でき、すべてが正常に動作します。次に、Spring Boot アプリケーションを Docker イメージとして追加したいと思います。まず、次のようにプロジェクト ディレクトリに Dockerfile を作成しました。 リーリー

次に、

mvn clean

がリリースされているプロジェクト ディレクトリに移動し、次に mvn install を実行します。次に、docker build -f Dockerfile -t manager . を実行し、その後に docker tag 9c6b1e3f1d5e myuser/manager:latest (ID は正しいです) を実行します。最後に、既存の docker-compose.yml ファイルを次のように編集しました: リーリー ただし、

sudo docker-compose -f docker-compose.yml up

コマンドを発行すると、データベースは再び正常に起動しますが、エラーが発生し、Web アプリケーションのコード 1 で終了します。セクション 。問題は接続文字列です。何か別のものに変更する必要があると思いますが、何を変更すべきかわかりません。次のエラー メッセージが表示されます: リーリー ###何か案は?

解決策

各コンテナには独自のネットワーク インターフェイスと独自のローカル ホストがあります。そこで、Java が Postgres を指す方法を変更します。 リーリー ### に: ### リーリー

db

は正しい Postgres IP に解決されます。

###ボーナス。 docker-compose を使用すると、イメージを手動でビルドする必要がありません。したがって、次のように変更します:

リーリー ### に: ###
version: '2'
services:
    db:
        container_name: sample_db
        image: postgres:9.5
        volumes:
            - sample_db:/var/lib/postgresql/data
        environment:
            - POSTGRES_PASSWORD=sample
            - POSTGRES_USER=sample
            - POSTGRES_DB=sample
            - PGDATA=/var/lib/postgresql/data/pgdata
        ports:
            - 5432:5432

volumes:
    sample_db: {}

私も同じ問題を抱えていましたが、それを理解して解決するまでに時間がかかりました: リーリー 誰もが理解できるようにすべてのプロパティを示します。

application.properties:

リーリー

docker-compose.yml:

リーリー

ローカル データベースを使用して Spring アプリケーションを起動するには、URL localhost を使用します。 データベースを使用してコンテナに接続するには、データベース サービスの「localhost」を変更する必要があります。私の場合は「

localhost」を「db

」に変更します。

解決策: SPRING_DATASOURCE_URL

環境を

docker-compose.yml に追加し、spring.datasource.url 接続値を書き換えます: リーリー これが人々の時間を節約するのに役立つことを願っています。

以上がDocker Compose + Spring Boot + Postgres 接続の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。