私はPostgresデータベースで動作するJava Spring Bootアプリケーションを持っています。私は彼らの両方のためにDockerを使いたい。私は当初、Postgresはドッカーにだけ入れて、私は次のように定義されたdocker-compose.yml
ファイル持っていた:私は、コマンドsudo dockerd
とsudo docker-compose -f docker-compose.yml up
を発行Docker Compose + Spring Boot + Postgres接続
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: {}
は、それがデータベースを始めていたが。 pgAdmin
を使用して接続することができます。例えば、サーバとしてlocalhost
を使用し、5432
のポートを使用して接続できます。その後、私のSpring Bootアプリでは、application.properties
ファイルの中で次のプロパティを定義しました。
spring.datasource.url=jdbc:postgresql://localhost:5432/sample
spring.datasource.username=sample
spring.datasource.password=sample
spring.jpa.generate-ddl=true
この時点で私はSpring Suiteを通じてSpring Bootアプリケーションをローカルで実行でき、すべて正常に動作していました。その後、Spring BootアプリをDockerイメージとして追加したいと考えました。
FROM java:8
EXPOSE 8080
ADD /target/manager.jar manager.jar
ENTRYPOINT ["java","-jar","manager.jar"]
その後、私はmvn install
続いmvn clean
発行されたプロジェクトのディレクトリに入力された:私が最初にすべての、このようになります私のプロジェクトのディレクトリにDockerfileを作成しました。次に、docker build -f Dockerfile -t manager .
が発行され、続いてdocker tag 9c6b1e3f1d5e myuser/manager:latest
(idが正しい)が発行されます。私はsudo docker-compose -f docker-compose.yml up
コマンドを発行する場合は、今、データベースが再び正常に起動しますが、私はエラーとWebアプリケーションの一部の終了コード1を取得し、
version: '2'
services:
web:
image: myuser/manager:latest
ports:
- 8080:8080
depends_on:
- db
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: {}
しかし:最後に、私はこのように見て、私の既存のdocker-compose.yml
ファイルを編集しました。問題は接続文字列です。私はそれを何かに変えなければならないと信じていますが、私はそれが何であるべきか分かりません。次のエラーメッセージが表示されます。
web_1 | 2017-06-27 22:11:54.418 ERROR 1 --- [ main] o.a.tomcat.jdbc.pool.ConnectionPool : Unable to create initial connections of pool.
web_1 |
web_1 | org.postgresql.util.PSQLException: Connection to localhost:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections
それがうまく働いた、ありがとうございます。 – typos
ようこそ。 – Robert