Контейнер Docker отказался от подключения MacOS - PullRequest
0 голосов
/ 27 октября 2018

У меня есть файл docker-compose:

networks:
    default:
        ipam:
            config:
                - subnet: 10.48.0.0/16
                  gateway: 10.48.0.1
services:
    haproxy:
        build: haproxy
        container_name: haproxy
        volumes:
            - ./haproxy/conf/:/usr/local/etc/haproxy/
            - ./haproxy/ssl/:/etc/ssl/xip.io/
        ports:
            - "80:80"
            - "443:443"
        networks: 
            default:
                ipv4_address: 10.48.0.2

    server:
        build: server
        container_name: server
        restart: always
        environment:
            - ENV=env=production db=true
        ports:
            - "8081:8081"
        volumes:
            - ./server/config:/usr/src/app/config
        depends_on: 
            - haproxy
        networks: 
            default:
                ipv4_address: 10.48.0.4

    frontend:
        build: frontend
        container_name: frontend
        restart: always
        ports:
            - "8080:8080"
        volumes:
            - ./frontend/config:/usr/src/app/config
        depends_on: 
            - server
        networks: 
            default:
                ipv4_address: 10.48.0.5
version: '2'

Чтобы развернуть внутренний сервер и интерфейс внешнего интерфейса внутри подсети, определенной в диапазоне 10.48.0.0/16. Поэтому я попытался назначить фиксированный IP для каждого контейнера. В Linux все в порядке, поэтому я могу достичь 10.48.0.4_8081 / api, но в MacOS, когда я пытаюсь сделать то же самое, у меня есть ERR_CONNECTION_REFUSED . Если я попытаюсь подключиться без использования IP, но с localhost: 8081 / api, это нормально. Но с несколькими контейнерами у меня есть доступ напрямую с IP. Внутри каждого контейнера, если я пытаюсь пропинговать другой ip-адрес (пример из интерфейса контейнера с IP 10.48.0.5, я пытаюсь пинговать 10.48.0.4), все в порядке. Итак, мой вопрос: как я могу сделать, чтобы сделать http-вызов API, который находится на другом сервисе? спасибо за вашу помощь.

1 Ответ

0 голосов
/ 27 октября 2018

Я читал везде, что это хорошо известная ситуация в Windows и Mac, но не в Linux, где это возможно со стороны клиента, делающего запрос непосредственно по IP-адресу контейнера. Это невозможно на Mac и все еще остается проблемой на GitHub. В этом случае я использовал haproxy для прокси-запросов к каждому контейнеру.

...