2017-07-11 10 views
0

docker-composeでサービスを実行中にネットワークに問題があります。基本的には、私はセットアップを持っている単純なFlask APIにKongを通してリクエストを出そうとしています。ドッキングウィンドウ-compose.ymlが バージョンを下回っている: "3.0"Docker-composeがクロスコンテナーリクエストを作成できません

services: 
    postgres: 
    image: postgres:9.4 
    container_name: kong-database 
    ports: 
     - "5432:5432" 
    environment: 
     - POSTGRES_USER=kong 
     - POSTGRES_DB=kong 

    web: 
    image: kong:latest 
    container_name: kong 
    environment: 
     - DATABASE=postgres 
     - KONG_PG_HOST=postgres 
    restart: always 
    ports: 
     - "8000:8000" 
     - "443:8443" 
     - "8001:8001" 
     - "7946:7946" 
     - "7946:7946/udp" 
    links: 
     - postgres 

    ui: 
    image: pgbi/kong-dashboard 
    container_name: kong-dashboard 
    ports: 
     - "8080:8080" 
    employeedb: 
    build: test-api/ 
    restart: always 
    ports: 
     - "5002:5002" 

私はコマンドcurl -i -X POST --url http://localhost:8001/apis/ --data name=employeedb --data upstream_url=http://localhost:5002 --data hosts=employeedb --data uris=/employeesで香港にAPIを追加します。私はDockerのネットワークIPとtest-apiの名前をupstreamurlのホスト名として渡して、さまざまな名前を含む多くの入力の組み合わせでこれを試しました。香港へのAPIを追加した後、私は

HTTP/1.1 502 Bad Gateway 
Date: Tue, 11 Jul 2017 14:17:17 GMT 
Content-Type: text/plain; charset=UTF-8 
Transfer-Encoding: chunked 
Connection: keep-alive 
Server: kong/0.10.3 

さらに私はdocker exec it <container-id> /bin/bashを実行しているドッキングウィンドウコンテナに得て、期待フラスコエンドポイントにカールリクエストを作成しようとしまします。 APIを実行しているコンテナでは、localhost:5002/employeesemployeedb:5002/employeesの両方への正常な呼び出しを行うことができました。しかし、Kongを実行しているコンテナからそれを作るときは、

curl -iv -X GET --url 'http://employeedb:5002/employees' 
* About to connect() to employeedb port 5002 (#0) 
* Trying X.X.X.X... 
* Connection refused 
* Failed connect to employeedb:5002; Connection refused 
* Closing connection 0 

私はコンテナを互いに公開している何らかの種類の構成がありませんか?

答えて

2

employeedbコンテナをkongに表示させるには、PostgreSQLデータベースと同様にlinkを定義する必要があります。 - postgresの下に追加エントリとして追加するだけで、Kongによって到達可能である必要があります。Kong:

.... 
links: 
    - postgres 
    - employeedb 

.... 
関連する問題