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/employees
とemployeedb: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
私はコンテナを互いに公開している何らかの種類の構成がありませんか?