Closed cotchan closed 2 years ago
daangn-server
를 docker-compose로 단독 배포80번 포트 nignx 컨테이너
는 당근 클라이언트 레포에서 배포한다고 가정하고 두 레포 컨테이너를 연결하기container_name
을 반드시 지정networks.default.external.name
속성에 기존에 만든 네트워크 설정을 추가하기version: "3"
services:
api_server:
container_name: apiapi
chat_server:
container_name: chatchat
networks:
default:
external:
name: daangn_net
default.conf
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
}
}
--network
옵션을 줘서 컴포즈에 정의한 네트워크와 같은 네트워크로 붙도록 합니다.$ docker build -t zhtcks/nginx ./
$ docker run -p 80:80 --network daangn_net zhtcks/nginx
$ docker network inspect daangn_net
daangn_net
네트워크 안에 80번 포트 nginx 컨테이너와 daangn_server 컨테이너가 모두 있는 걸 확인할 수 있습니다.[
{
"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": {}
}
]
고민사항
해결방법
도커 네트워크
를 미리 만들고, docker-compose.yml에networks.default.external.name
설정 사용