Отказ в соединении при соединении двух контейнеров в docker-compose - PullRequest
0 голосов
/ 21 сентября 2018

Я новичок в докере и столкнулся с проблемой при попытке подключиться к контейнеру из другого.Самое странное в том, что с некоторыми контейнерами действительно можно связаться, а с другими, настроенными таким же образом, нет.Я пробовал миллионы исправлений, найденных во время сканирования Google, ничего не работает.Я думаю, что это простая ошибка noob.

Вот мой файл docker-compose:

version: '3.4'

services:

  mssql.db.posm:
    image: "microsoft/mssql-server-linux"
    environment:
        SA_PASSWORD: "mypassword"
        ACCEPT_EULA: "Y"
        MSSQL_PID: "Express"
    volumes:
      - mssql-data:/var/opt/mssql
    ports:
      - "1433:1433"
    networks:
      posm:

  api.posm:
    image: ${DOCKER_REGISTRY}posm.api
    build:
      context: .
      dockerfile: Posm.Api/Dockerfile
    expose:
      - "6869"
    ports:
      - "6869:80"
    networks:
      posm:

  cloud.subscription:
    image: ${DOCKER_REGISTRY}cloud.subscription
    build:
      context: ./Services
      dockerfile: Cloud.Subscription/Dockerfile
    ports:
      - "80"
    networks:
      posm:

  catalogmanager.services.posm:
    image: ${DOCKER_REGISTRY}posm.services.catalogmanager
    build:
      context: ./Services
      dockerfile: CatalogManager/Dockerfile
    ports:
      - "80"
    networks:
      posm:
        aliases:
          - services.posm
          - catalogmanager

  productmanager.services.posm:
    image: ${DOCKER_REGISTRY}posm.services.productmanager
    build:
      context: ./Services
      dockerfile: ProductManager/Dockerfile
    ports:
      - "80"
    networks:
      posm:
        aliases:
          - services.posm
          - productmanager

  localizer.services.posm:
    image: ${DOCKER_REGISTRY}posm.services.localizer
    build:
      context: ./Services
      dockerfile: Localizer/Dockerfile
    ports:
      - "80"
    networks:
      posm:
        aliases:
          - services.posm
          - localizer

networks:

  posm:

volumes:

  mssql-data:

Итак, когда я подключаюсь к api.posm, последний может успешно подключитьсяв mssql.db.posm и в облачную подписку.Однако, из-за ошибки в соединении отказано, он не может соединиться с 'catalogmanager' и 'productmanager', даже если я могу определить их имя хоста из api.posm ... Что происходит?

Ответы [ 2 ]

0 голосов
/ 22 сентября 2018

Итак, проблема заключалась в исключении переполнения стека в одном из моих изображений, которое не было обработано моим отладчиком, и поэтому я его не увидел.

Относительно вашего ответа Moreno ...

Вы предоставляете псевдоним services.posm для 'catalogmanager' и 'productmanager'

Я продублировал этот пост на Docker forum для увеличения моих шансов получить соответствующий ответ, и кто-то предложил то же самое.Причина, по которой я использовал одни и те же псевдонимы для трех разных служб, заключается в том, что я где-то читал (конечно, не могу сейчас его найти), что вы можете пометить несколько служб одним и тем же псевдонимом для целей обнаружения.Возможно, я ошибся, но Докер, похоже, не возражает против этого.

Итак, спасибо за ваше время, тем не менее, извините, что беспокоился о таком глупом неправильном обращении с моим кодом.

BottomСтрока: ДОКЕРНЫЕ Породы

0 голосов
/ 21 сентября 2018

Вы предоставляете псевдоним services.posm для 'catalogmanager' и 'productmanager':

  posm:
    aliases:
      - services.posm
      - catalogmanager

В соответствии с документацией (https://docs.docker.com/compose/compose-file/#aliases), это даст хосту "services".posm "для контейнеров в сети posm. Это означает, что у вас есть 2 раза хост" services.posm "в сети, и оба выставляют порт 80. Это не будет работать. Удалите строку" services.posm "на псевдонимах обоих контейнеров перезапустите, и вы сможете получить к ним доступ, используя хосты catalogmanager и productmanager.

...