daangn-daangn / daangn-server

🥕당근 서버 리포지토리🥕
4 stars 2 forks source link

server 레포와 client 레포 별도 배포 시 동기화를 위한 networks 옵션 적용 #72

Closed cotchan closed 2 years ago

cotchan commented 2 years ago

고민사항

해결방법

cotchan commented 2 years ago

server 레포와 client 레포 별도 배포 시 동기화 방법 테스트한 내용

목차

  1. Docker container 간 네트워크 통신 검증
    • 검증하려고 했던 내용
    • docker-compose.yml(daangn-server)
    • Dockerfile(nginx)
    • docker build nginx Dockerfile
    • docker network inspect daangn_net

Docker container 간 네트워크 통신 검증

검증하려고 했던 내용

docker-compose.yml(daangn-server)

version: "3"

services:
  api_server:
    container_name: apiapi

  chat_server:
    container_name: chatchat

networks:
  default:
    external:
      name: daangn_net

Dockerfile(nginx)

upstream api {
    # 여기에 같은 네트워크 안에 있는 컨테이너 이름을 써야하는 게 매우 중요한 내용입니다.
    # server {your_API_container_id}:{PORT}; 이렇게 기입해도 똑같이 동작합니다. 
    server apiapi:8080;
}

upstream chat {
    server chatchat:8880;
}

server {
    listen 80;

    # '/' 경로로 시작하는 모든 요청은 http://frontend로 보냅니다.
    location /api {
        proxy_pass http://api;
    }

    # '/api/' 경로로 시작하는 요청은 http://backend로 보냅니다.
    location /chat {
        proxy_pass http://chat;
    }
}
upstream {your_resolver_name} {
    server {your_API_container_id}:{PORT};
}

server {
    location /api {
        proxy_pass http://{your_resolver_name}$request_uri
    }
}

docker build nginx Dockerfile

$ docker build -t zhtcks/nginx ./
$ docker run -p 80:80 --network daangn_net zhtcks/nginx

docker network inspect daangn_net

$ docker network inspect daangn_net
[
    {
        "Name": "daangn_net",
        "Id": "974c4b4effd9b0220a5984160fb7aaa52a8f51eff58ce95f9395aa2554b5c289",
        "Created": "2022-05-07T23:15:49.2895195Z",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "172.26.0.0/16",
                    "Gateway": "172.26.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "4677f53f15f94f253c847676503890fa6091348816b2ecd439c7b53f0933afc5": {
                "Name": "apiapi",
                "EndpointID": "9b46adc870bbc02522fffc7e9625821e7a02e8c770608832c8e7970ef46bab44",
                "MacAddress": "02:42:ac:1a:00:02",
                "IPv4Address": "172.26.0.2/16",
                "IPv6Address": ""
            },
            "ad3d39717dedab780360d0b8b3df8d23495f1eb9e492410d79d76b8cd60b52b6": {
                "Name": "zealous_galileo",
                "EndpointID": "95f1dab901b34fba0a17fb303ff978cdff1617f1f3c35b94f5e324e880dec4d5",
                "MacAddress": "02:42:ac:1a:00:04",
                "IPv4Address": "172.26.0.4/16",
                "IPv6Address": ""
            },
            "ad4a12eb814dbb2fc9418a763cbc829d6f01241ab63634930ad1d096325c1396": {
                "Name": "chatchat",
                "EndpointID": "04858d21bef0f098ab2f7bdaac5c8e04852be81adb347fd29ff92a880334947d",
                "MacAddress": "02:42:ac:1a:00:03",
                "IPv4Address": "172.26.0.3/16",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {}
    }
]