2017-07-11 2 views
0

Je rencontre des problèmes de réseau en cours d'exécution des services dans docker-compose. Essentiellement, je suis en train d'essayer de faire une requête get via Kong à une simple API Flask que j'ai configurée. Le docker-compose.yml est inférieure à la version : "3.0"Docker-composer impossible de faire des demandes de conteneurs croisés

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" 

-je ajouter à l'API avec la commande hong curl -i -X POST --url http://localhost:8001/apis/ --data name=employeedb --data upstream_url=http://localhost:5002 --data hosts=employeedb --data uris=/employees. J'ai essayé ceci avec de nombreuses combinaisons d'entrées, y compris des noms différents, passant dans l'IP du réseau Docker et le nom de l'API de test comme nom d'hôte pour l'upstreamurl. Après avoir ajouté l'API à Kong, je reçois

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 

De plus, je suis devenu dans les conteneurs de docker en cours d'exécution docker exec it <container-id> /bin/bash et a tenté de faire des demandes papillotes au point final de flacon attendu. Alors que sur le conteneur exécutant l'API, je pouvais faire un appel réussi à la fois localhost:5002/employees ainsi que employeedb:5002/employees. Toutefois, lorsque ce qui en fait à partir du conteneur en cours d'exécution Kong Je vois

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 

Est-ce que je manque une sorte de configuration qui expose les conteneurs les uns aux autres?

Répondre

2

Vous devez rendre le conteneur employeedb visible à kong en définissant un link comme vous l'avez fait avec la base de données PostgreSQL. Il suffit de l'ajouter comme une entrée supplémentaire directement au-dessous de - postgres et il devrait être accessible par Kong:

.... 
links: 
    - postgres 
    - employeedb 

....