соединение docker-compose с другим контейнером завершается неудачно - PullRequest
0 голосов
/ 29 января 2019

У меня есть два образа докера, один сервер отдыха (flaskapp) и другой веб-сервер (web).Я пытаюсь запустить их, используя docker-compose.

Однако кажется, что веб-контейнер не может связаться с контейнером отдыха

Ниже приведен мой файл docker-compose.yml:

version: '3'
services:
  flaskapp:
    build: ./rest_server
    restart: always
    networks:
      - docker_network
    expose:
      - 5001

  web:
    build: ./web
    restart: always
    ports:
      - 3002:3000
    depends_on:
      - flaskapp
    networks:
      - docker_network
    healthcheck:
      test: ["CMD", "curl", "-f", "http://flaskapp:5001/todos"]
networks:
  docker_network:
    driver: bridge

Мое веб-приложение ссылается на следующий URL:

http://flaskapp:5001/todos

Однако, если я войду в докер-контейнер с помощью docker exec -it <id> /bin/bash ивыполнить следующую команду, я получаю ответ json, который я ожидаю.

curl http://flaskapp:5001/todos

Я также могу выставить порт своего сервера отдыха и затем изменить адрес сервера отдыха на localhost на веб-сервере, и это решит проблемуОднако это не то, что я хотел бы.

Я не хочу выставлять мой сервер отдыха на хост-машине.

Ответы [ 2 ]

0 голосов
/ 29 января 2019

Вам необходимо:

  1. определить общую сеть для ваших контейнеров
  2. предоставить порт 5001 вашего flaskapp контейнера

Действительно, согласно документации , инструкция EXPOSE «открывает порты без публикации их на хост-компьютере - они будут доступны только для связанных служб».Таким образом, он обеспечивает связь между контейнером, который «выставляет» порт, и другими контейнерами в той же сети.

Попробуйте что-то вроде этого:

version: '3'
services:
    flaskapp:
        build: ./rest_server
        expose:
            - 5001
        networks:
            - docker_network

    web:
        build: ./web
        restart: always
        ports:
            - 3002:3000
        networks:
            - docker_network
        depends_on:
            - flaskapp

networks:
  docker_network:
    driver: bridge
0 голосов
/ 29 января 2019

просто добавьте:

expose:
 - "5001"

в раздел flaskapp.

Это не открывает порт 5001 для хоста, это просто открывает порт 5001 для всех контейнеров в той же сети, что вам и нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...