본문 바로가기
[서버]/[SpringBoot Kotlin]

Docker Nginx

by Hevton 2023. 4. 11.
반응형

 

Nginx 이미지를 Docker Hub에서 받아오기

docker pull nginx

 

 

Nginx 컨테이너 생성 및 실행

docker run -d -p 80:80 --name my-nginx nginx

호스트로 들어오는 포트 80, 현재 컨테이너의 80포트로 연결

 

 

Nignx 파일

server {
    listen 80;
    server_name localhost;

    location / {
        proxy_pass http://api-container:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

nignx 가 받아서, 실행중인 API SERVER 컨테이너명인 api-container의 8000 포트로 넘겨줌.

 

 

 

Nginx 컨테이너와 API SERVER 컨테이너를 연결하기 위해선

 

1. Network 설정

2. Docker-compose 파일 설정

 

방법이 있다.

1번이 간단하다.

docker network create my-network

이러한 네트워크를 생성해주고

 

API SERVER 컨테이너와 Nginx 컨테이너를 실행할 때 --network my-network 옵션을 넣어주면 된다.

 

 

그리고 설정 파일을 마운트 하는 방법이 있는데,

-v 옵션을 주고 호스트 경로:컨테이너 경로 로 지정해 주면 된다.

그러면 호스트의 설정 파일을 컨테이너의 설정 파일에 적용해준다.

docker run --name nginx-container --network my-network -v /path/to/nginx.conf:/etc/nginx/conf.d/default.conf nginx

 

 

 

nginx 컨테이너와 api 컨테이너 연결하려면

보통

nginx 설정파일에서 listen을 80으로 두고, proxy를 apiserver 8080 포트로 둔 다음

nginx 컨테이너 실행 시 network를 특정 네트워크로 설정하고, 포트는 80:80 으로 해서, 사용자가 외부에서 호스트의 80으로 들어오면 nginx 컨테이너의 80 포트로 들어오게 한 뒤에 api 서버는 8080 포트로 열리게 한 다음 컨테이너 실행 시 포트를 8080:8080 으로 설정하고 nginx에서 설정했던 네트워크와 이름을 맞춰준다.

 

 

반응형