2017-05-15 2 views
2

に接続しないように、私はdocker-compose.ymlpostgresサーバーを定義します。コンテナが提供する情報(host =「DB」と= 5432port)によって別のものに接続することができないのはなぜができpostgresのコンテナ

Is the server running on host "db" (172.22.0.2) and accepting 
data-service_1 | TCP/IP connections on port 5432? 

:しかし、それは警告とエラーになりますか?

PS docker-compose.yml全 :

version: "2" 
services: 
    data-service: 
     build: . 
     depends_on: 
      - db 
     ports: 
      - "50051:50051" 
    db: 
     image: postgres:9.5 
     depends_on: 
      - data-volume 
     environment: 
      - POSTGRES_USER=cobrain 
      - POSTGRES_PASSWORD=a 
      - POSTGRES_DB=datasets 
     ports: 
      - "8000:5432" 
     expose: 
      - 5432 
     volumes_from: 
      - data-volume 
      # - container:postgres9.5-data 
     restart: always 

    data-volume: 
     image: busybox 
     command: echo "I'm data container" 
     volumes: 
      - /var/lib/postgresql/data 
+0

が、私はこれを追加し、フル 'ドッキングウィンドウ-compose.yml' –

+0

@AlexKarshin投稿してください:私は、リンクや環境のような他の偶然にを使用しようとするだろう。 –

答えて

2

溶液#1。同じファイル。

dbコンテナにアクセスできるようにするには、他のコンテナをdocker-compose.ymlのコンテキストで定義する必要があります。コンテナが開始されると、各コンテナは/etc/hostsにマップされた他のすべてのコンテナを取得します。あなたは同じdocker-compose.ymlにあなたの他のコンテナを置くことを希望しない場合

ちょうど

version: '2' 
services: 
    web: 
    image: your/image 
    db: 
    image: postgres:9.5 

を行い、他のソリューションがあります。

溶液#2。 IP

Do docker inspect <name of your db container>となり、結果リストにIPAddress指示文があります。接続するホストにはIPAddressを使用してください。

解決策3。ネットワーク

コンテナを同じネットワークに参加させます。そのために、各サービスの下で、定義:

services: 
    db: 
    networks: 
    - myNetwork 

は、あなたが開始され、各コンテナの dbを変更することを忘れないでください。

私は通常、開発中に最初の解決策を使います。私はapache+phpを1つのコンテナとして使用し、pgsqlを別のものとして使用し、プロジェクトごとに別々のDBを使用します。私はdocker-compose.ymlの複数の設定を開始しないので、両方のコンテナを1つの.yml設定で定義するこのケースでは完璧です。

+0

しかし 'build:.'は' image:your/image'と同じです。私は解決策1と私の違いを見ることができません。 –

+0

実際には、より詳細な検査で、再帰的な依存関係を定義するので、 'depends_on'は問題を引き起こすかもしれないと思います。 –

+0

再帰的?いいえ、それは単に依存関係のチェーン 'data-service - > db - > data-volume'です。 –

0

これは正しくありません。

version: "2" 
    services: 
     data-service: 
      build: . 
      links: 
       - db 
      ports: 
       - "50051:50051" 
      volumes_from: ["db"] 
      environment: 
       DATABASE_HOST: db 
     db: 
      image: postgres:9.5 
      environment: 
       - POSTGRES_USER=cobrain 
       - POSTGRES_PASSWORD=a 
       - POSTGRES_DB=datasets 
      ports: 
       - "8000:5432" 
      expose: 
       - 5432 
      #volumes_from: 
       #- data-volume 
       # - container:postgres9.5-data 
      restart: always 

     data-volume: 
      image: busybox 
      command: echo "I'm data container" 
      volumes: 
       - /var/lib/postgresql/data 

この1つは私に(ないpostgresのが、MySQL)の作品

関連する問題