docker имена конечных точек контейнеров в производственной среде - PullRequest
0 голосов
/ 03 мая 2020

Я занимаюсь разработкой микросервисного приложения и использую docker -compose для оркестровки. У меня есть приложение angular и 2 микросервиса, разработанные с пружинной загрузкой. В моей среде localhost я успешно обменивался данными между контейнерами и отправлял запросы, но когда я попытался запустить файл docker -compose в экземпляре оболочки Google, запросы к бэкэнду не были выполнены.

EndPoints в angular у проекта есть этот шаблон

http://localhost:8090/**

Я также пытался использовать имена контейнеров, определенные в моем docker -compose как

searchservice:8080/**

, но он также не работал.

Это моя docker -композитная конфигурация

version: '3.5'
services:



  searchservice:
    hostname: searchservice
    image: ayoubdali/searchservice:0.0.3-SNAPSHOT
    container_name: searchservice
    networks:
      - es-network
          #ipv4_address: 172.21.0.12
    ports:
      - 8080:8080
    restart: always
    depends_on:
      - elasticsearch


  subscriber-service:
    hostname: subscriber-service
    image: ayoubdali/subscriberservice:0.0.4-SNAPSHOT
    container_name: subscriber-service
    networks:
      - es-network 
          #ipv4_address: 172.21.0.13
    ports:
      - 8090:8090
    restart: always
    depends_on:
      - mongo1
      - mongo2

  searchappfront:
    hostname: searchappfront
    image: frontservice:0.5.0
    container_name: searchappfront
    networks:
      - es-network
    ports:
      - 4200:80
    restart: always
    depends_on:
      - subscriber-service
      - searchservice

  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.8.6
    hostname: elasticsearch
    container_name: elasticsearch
    ports:
      - 9200:9200
    networks:
      - es-network  
  mongo1:
    hostname: mongo1
    image: mongo
    container_name: mongo1
    networks:
      - es-network
    ports:
      - 27018:27017
    restart: always
    entrypoint: [ "/usr/bin/mongod", "--bind_ip_all", "--replSet", "rs0" ]

networks:
  es-network:
    attachable: true

1 Ответ

0 голосов
/ 08 мая 2020

Если я правильно вас понял, проблема в том, что ваш контейнер Angular (передний) не может связаться с searchservice через порт 8080 на экземпляре GCP, в то время как в вашей локальной среде он работает

Так как показанная ошибка связан с DNS при использовании имени хоста в URL-адресе конечной точки, убедитесь, что все работает правильно с точки зрения DNS, и когда вы делаете DNS-запрос к этому имени хоста, он решает, как следует. Кроме того, в этом развертывании нет других услуг или продуктов GCP, таких как Cloud DNS,

...