简体   繁体   中英

Docker Container Connection Refused MacOS

I have this docker-compose file:

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'

In order to deploy a backend server and a frontend interface inside a subnet defined in the range 10.48.0.0/16. So I tried to assign fixed ip to each container. On Linux everything is ok, so I can reach 10.48.0.4_8081/api, but on MacOS when I try to do the same thing, I have ERR_CONNECTION_REFUSED . If I try to connect without using IP, but with localhost:8081/api, this is ok. But with multiple containers, I have to access directly with the IP. Inside each container, if I try to ping the other ip address (example from container frontend with IP 10.48.0.5 I try to ping 10.48.0.4) everything is OK. So my question is, How can I do in order make an http call to an api that is on another service? thanks for your help.

I've read everywhere that is a well know situation under windows and mac, but not on linux, where is possible from the client side making request directly on the ip address of the container. This is not possible on mac and is still open an issue on github. In this case, I've used haproxy in order to proxy requests to each container.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM