Docker вызов из контейнера узла в контейнер python - PullRequest
0 голосов
/ 16 июня 2020

У меня есть проект Docker, состоящий из:

  • Rest API, написанного на Flask (называемого «python»)
  • Backend, написанного на nodejs (так называемый «сервер»)
  • Mongodb

#docker-compose.yml

version: '3.8'
services:
  server:
    build:
      context: ./server
      dockerfile: ./Dockerfile
    restart: on-failure
    ports:
      - "6000:6000"
    links:
      - python
      - mongo
    depends_on:
      - python
      - mongo
    volumes:
      - ./server:/code
    env_file: .env
    environment:
      - MONGO_USERNAME=$DATABASE_USERNAME
      - MONGO_PASSWORD=$DATABASE_PASSWORD
      - MONGO_HOST=mongo
      - MONGO_PORT=$DATABASE_PORT
      - MONGO_DB=$DATABASE
    networks:
      - todo-network
  python:
    build:
      context: ./rest_api_wrapper_py
      dockerfile: ./Dockerfile
    restart: on-failure
    ports:
      - "5000:5000"
    links:
      - mongo
    depends_on:
      - mongo
    volumes:
      - ./rest_api_wrapper_py:/code   
    env_file: .env
    environment:
      - MONGO_USERNAME=$DATABASE_USERNAME
      - MONGO_PASSWORD=$DATABASE_PASSWORD
      - MONGO_HOST=mongo
      - MONGO_PORT=$DATABASE_PORT
      - MONGO_DB=$DATABASE
    networks:
      - todo-network
  mongo:
    image: mongo
    restart: on-failure
    env_file: .env
    environment:
      - MONGO_INITDB_ROOT_USERNAME=$DATABASE_ROOT_USERNAME
      - MONGO_INITDB_ROOT_PASSWORD=$DATABASE_ROOT_PASSWORD
      - MONGO_INITDB_DATABASE=$DATABASE
      - DATABASE_USERNAME=$DATABASE_USERNAME
      - DATABASE_PASSWORD=$DATABASE_PASSWORD
      - MONGO_PORT=$DATABASE_PORT
    volumes:
      - /home/s0n1c/tmp/mongo:/data/mongo
      - ./docker_scripts/:/docker-entrypoint-initdb.d
      - /data/mongodb/db:/data/db
    ports:
      - "27017:27017"
    networks:
      - todo-network
networks:
  todo-network:
    driver: bridge

"python" запускается правильно:

Running on http://127.0.0.1:5000/

Мне нужно вызвать конечную точку python: 5000 / переменные с «сервера» (node js):

(async () => {
  try {
  const res = await superagent.get('http://python:5000/variables');
  console.log(res);
  } catch (err) {
console.error(err);
  }
})();

Этот запрос не выполняется:

server_1  | Error: connect ECONNREFUSED 172.19.0.3:5000
server_1  |     at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1141:16) {
server_1  |   errno: -111,
server_1  |   code: 'ECONNREFUSED',
server_1  |   syscall: 'connect',
server_1  |   address: '172.19.0.3',
server_1  |   port: 5000,
server_1  |   response: undefined
server_1  | }

Кто-нибудь может мне помочь, пожалуйста? Большое спасибо

...