2017-04-22 7 views
0

私のdocker-compose.yalファイルでは、私はspring-bootベースのWebサービスとpostgresqlデータベースサービスを定義します。 Webサービスはdbサービスを参照し、データベースサービスのホスト名を参照する必要のあるデータベースデータソースURLの環境変数を持っています。これは、それがどのように見えるかです:docker-compose:spring-boot Webサービスへのアクセスpostgres db service

version: '3' 
services: 

    web: 
    container_name: medmap-server 
    hostname: medmap-server 
    build: ../../../build/docker 
    ports: ["8090:8090"] 
    links: 
     - db:database 
    environment: 
     - spring.datasource.url=jdbc:postgresql://medmap-db:5433/medmapdb 
     - spring.datasource.username=docker 
     - spring.datasource.password=docker  
     - logging.level.org.hibernate=DEBUG 

    db: 
    container_name: medmap-db 
    hostname: medmap-db 
    image: postgres:9.6.2 
    ports: 
     - "5433:5433" 
    volumes: 
     - /var/lib/medmap/data 
    environment: 
     - POSTGRES_PASSWORD=docker 
     - POSTGRES_USER=docker 
     - POSTGRES_DB=medmapdb 
     - PGDATA=/var/lib/medmap/data/pgdata 

私はdocker-compose upを使用して、このアプリケーションを起動すると、私は次のエラーを取得する:

medmap-server | Caused by: org.postgresql.util.PSQLException: Connection to medmap-db:5433 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections 
. 
medmap-server |   at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:239) ~[postgresql-9.4-1200-jdbc41.jar!/:9.4] 
medmap-server |   at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:66) ~[postgresql-9.4-1200-jdbc41.jar!/:9.4] 
medmap-server |   at org.postgresql.jdbc2.AbstractJdbc2Connection.<init>(AbstractJdbc2Connection.java:127) ~[postgresql-9.4-1200-jdbc41.jar!/:9.4] 
medmap-server |   at org.postgresql.jdbc3.AbstractJdbc3Connection.<init>(AbstractJdbc3Connection.java:29) ~[postgresql-9.4-1200-jdbc41.jar!/:9.4] 
medmap-server |   at org.postgresql.jdbc3g.AbstractJdbc3gConnection.<init>(AbstractJdbc3gConnection.java:21) ~[postgresql-9.4-1200-jdbc41.jar!/:9.4] 
medmap-server |   at org.postgresql.jdbc4.AbstractJdbc4Connection.<init>(AbstractJdbc4Connection.java:41) ~[postgresql-9.4-1200-jdbc41.jar!/:9.4] 
medmap-server |   at org.postgresql.jdbc4.Jdbc4Connection.<init>(Jdbc4Connection.java:24) ~[postgresql-9.4-1200-jdbc41.jar!/:9.4] 
medmap-server |   at org.postgresql.Driver.makeConnection(Driver.java:414) ~[postgresql-9.4-1200-jdbc41.jar!/:9.4] 
medmap-server |   at org.postgresql.Driver.connect(Driver.java:282) ~[postgresql-9.4-1200-jdbc41.jar!/:9.4] 
medmap-server |   at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:310) ~[tomcat-jdbc-8.5.11.jar!/:na] 
medmap-server |   at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:203) ~[tomcat-jdbc-8.5.11.jar!/:na] 
medmap-server |   at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:732) ~[tomcat-jdbc-8.5.11.jar!/:na] 
medmap-server |   at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:664) ~[tomcat-jdbc-8.5.11.jar!/:na] 
medmap-server |   at org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:479) ~[tomcat-jdbc-8.5.11.jar!/:na] 
medmap-server |   at org.apache.tomcat.jdbc.pool.ConnectionPool.<init>(ConnectionPool.java:154) ~[tomcat-jdbc-8.5.11.jar!/:na] 
medmap-server |   at org.apache.tomcat.jdbc.pool.DataSourceProxy.pCreatePool(DataSourceProxy.java:118) ~[tomcat-jdbc-8.5.11.jar!/:na] 
medmap-server |   at org.apache.tomcat.jdbc.pool.DataSourceProxy.createPool(DataSourceProxy.java:107) ~[tomcat-jdbc-8.5.11.jar!/:na] 
medmap-server |   at org.apache.tomcat.jdbc.pool.DataSourceProxy.getConnection(DataSourceProxy.java:131) ~[tomcat-jdbc-8.5.11.jar!/:na] 
medmap-server |   at org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.java:122) ~[hibernate-core-5.0.12.Final.jar!/: 
5.0.12.Final] 
medmap-server |   at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess.obtainConnection(JdbcEnvironmentInitiator.java:180) ~[hibernate-core-5 
.0.12.Final.jar!/:5.0.12.Final] 
medmap-server |   at org.hibernate.tool.schema.extract.internal.ExtractionContextImpl.getJdbcConnection(ExtractionContextImpl.java:62) ~[hibernate-core-5.0.12.Final.jar!/:5.0.12.Final] 
medmap-server |   ... 38 common frames omitted 
medmap-server | Caused by: java.net.ConnectException: Connection refused (Connection refused) 
medmap-server |   at java.net.PlainSocketImpl.socketConnect(Native Method) ~[na:1.8.0_121] 
medmap-server |   at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) ~[na:1.8.0_121] 
medmap-server |   at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) ~[na:1.8.0_121] 
medmap-server |   at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) ~[na:1.8.0_121] 
medmap-server |   at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[na:1.8.0_121] 
medmap-server |   at java.net.Socket.connect(Socket.java:589) ~[na:1.8.0_121] 
medmap-server |   at org.postgresql.core.PGStream.<init>(PGStream.java:61) ~[postgresql-9.4-1200-jdbc41.jar!/:9.4] 
medmap-server |   at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:121) ~[postgresql-9.4-1200-jdbc41.jar!/:9.4] 
medmap-server |   ... 58 common frames omitted 
medmap-server | 
medmap-server exited with code 1 

私にはわからないどのようなことはpg_hba.confファイルを許可するように作成された方法ですあるコンテナ内のWebサービスが別のコンテナ内のdbサービスにアクセスするこれに関する助言はTIAにあります。

+0

Postgresのログに何が?あなたはポートについては確かですか?デフォルトは5432ではなく、5433 –

+0

良い提案です。 Postgresqlは5432で動作していました。ありがとう。 –

答えて

2

default port for postgres is 5432を、私はpostgresのポートを見て示唆するためにVAO-ツン@に5433

port (integer) The TCP port the server listens on; 5432 by default. Note that the same port number is used for all IP addresses the server listens on. This parameter can only be set at server start.

0

の代わりに私のおかげでそれを定義してみてください。

は、私が使用して、DBサービスのconatiner上のbashシェルを凝視することによって、私のデシベルサービスではpostgresが使用するポートを見て:その後、bashシェルで次のpsqlコマンドを

docker exec -i -t medmap-db /bin/bash

とを実行します

psql -U postgres -c "SELECT * FROM pg_settings WHERE name = 'port';" これは私のウェブサービスがspring.datasource.url env variablで指定されたIDBC URLで使用していた5423ではなくポート5432を使用していることを示しています。 e。

これを修正するには、私のdbサービスでPGPORT = 5433 env変数を指定する必要がありました。一般的な間違いは、docker-composeのportsフィールドが、サービスが使用するポートを指定すると仮定することです。ポートフィールドはサービスによって使用されるポートを宣言します。サービス固有のポートを設定する必要があります(postgresの場合はenv変数PGPORTでした)。以下は

働いていた私の改訂ドッカ-compose.ymlファイルです:

version: '3' 
services: 

    web: 
    container_name: medmap-server 
    hostname: medmap-server 
    build: ../../../build/docker 
    ports: ["8090:8090"] 
    links: 
     - db:database 
    environment: 
     - server.port=8090 
     - spring.datasource.url=jdbc:postgresql://medmap-db:5433/medmapdb 
     - spring.datasource.username=postgres 
     - spring.datasource.password=postgres  
#  - logging.level.org.hibernate=DEBUG 

    db: 
    container_name: medmap-db 
    hostname: medmap-db 
    image: postgres:9.6.2 
    ports: 
     - "5433:5433" 
    volumes: 
     - /var/lib/medmap/data 
    environment: 
     - POSTGRES_PASSWORD=postgres 
     - POSTGRES_USER=postgres 
     - POSTGRES_DB=medmapdb 
     - PGDATA=/var/lib/medmap/data/pgdata 
     - PGPORT=5433 
関連する問題