Docker: соединение отклонено на открытом порту

У меня есть два контейнера Docker: node-a, node-b. Один из них (узел-b) должен отправить http-запрос другому (узел-а). Я запускаю их с Docker Compose. Когда я пытаюсь создать их с помощью Compose, я сталкиваюсь с ошибкой:

Получите http://node-a:9098: наберите tcp 172.18.0.3:9098: getsockopt: соединение отклонено

EXPOSE объявлен в Docker-файле a-узла:

EXPOSE 9098

докер-compose.yml:

version: '3'                         
services:                            
    node-a:         
        image: a        
        ports:                       
            - 9098:9098              
        volumes:                     
            - ./:/a-src 
        depends_on:                  
            - redis                  
    node-b:            
        image: b           
        volumes:                     
            - ./:/b-src    
        depends_on:                  
            - node-a

Переадресация включена. Я считаю, что сервер запускается, потому что он хорошо работает без Docker.

Куда мне следует обратить внимание? Что может вызвать проблему?

РЕДАКТИРОВАТЬ:

Я пытался добавить ссылки, но это не помогло:

node-b:            
        image: b           
        volumes:                     
            - ./:/b-src 
        links:
            - node-a   
        depends_on:                  
            - node-a

Также links, похоже, устарел и делает то же самое, что и depends_on в 2+ версии docker-compose.yml:

docker-compose выполнить файлы V2, он автоматически создаст сеть между всеми контейнерами, определенными в файле, и каждый контейнер сможет немедленно ссылаться на другие, просто используя имена, определенные в файле docker-compose.yml.


person I159    schedule 30.07.2017    source источник
comment
Существует вероятность, что узел-а еще не открыл порт. Может быть?   -  person Robert    schedule 31.07.2017
comment
@ Роберт, да, может быть. Также я пытался использовать wait-for-it.sh, но безуспешно. Есть ли лучшие способы синхронизации контейнеров?   -  person I159    schedule 31.07.2017
comment
Ожидание в настоящее время является лучшим обходным решением для таких случаев. Узел-приложение слушает 0.0.0.0 (должно) или только 127.0.0.1?   -  person Robert    schedule 31.07.2017


Ответы (1)


Свяжите контейнер со службой, используя links. (документация docker-compose по ссылкам).

Пример:

node-b:            
    image: b           
    volumes:                     
        - ./:/b-src    
    depends_on:                  
        - node-a
    links:
        - node-a
person mgyongyosi    schedule 30.07.2017
comment
Я пробовал, но это не имело никакого эффекта. Пожалуйста, смотрите обновления. - person I159; 31.07.2017