티스토리 뷰

서버 구성도

Docker를 활용한 서버 구성도며, 하나의 서버에서 Docker container 확장을 통한 WAS 운영이 목표였다. Docker jwilder/nginx-proxy 를 통한 Reverse Proxy 환경을 구현할 수 있었고, 아래와 같은 서버 구성으로 서비스를 운영 중이다.

docker reverse proxy 구성도

 

 

Docker Reverse Proxy 설정

jwilder/nginx-proxy 이미지를 내려받아, nginx proxy 컨테이너를 구동시켜야 한다.

docker pull jwilder/nginx-proxy

출처.hub.docker.com/r/jwilder/nginx-proxy

 

아래 명령어를 통해 proxy_nginx 컨테이너를 생성한다.

  • port : 80 / 443
  • volume ( *ro : 읽기 전용 )
    • /var/run/docker.sock:/tmp/docker.sock:ro
      Docker 데몬이 기본적으로 수신 대기하는 Unix 소켓으로 컨테이너 내에서 데몬과 통신하는 데 사용한다.
      자세한 내용은 다음 링크를 참고하자. [바로가기]
    • /etc/letsencrypt:/etc/letsencrypt:ro 
      SSL 인증서 파일을 위한 볼륨 설정
    • /home/centos/nginx/conf.d:/etc/nginx/conf.d
      Nginx Conf 설정을 위한 볼륨 설정
    • /home/centos/nginx/log:/var/log/nginx
      Nginx 로그 확인을 위한 볼륨 설정

docker run -d -p 80:80 -p 443:443 -v /var/run/docker.sock:/tmp/docker.sock:ro -v /etc/letsencrypt:/etc/letsencrypt:ro -v /home/centos/nginx/conf.d:/etc/nginx/conf.d -v /home/centos/nginx/log:/var/log/nginx --name [컨테이너:proxy-nginx] [이미지:jwilder/nginx-proxy]

 

정상적으로 생성되었다면, 아래와 같이 docker 프로세스 정보를 확인할 수 있다.

 

docker ps.jwilder/nginx-proxy

 

 

WAS Cotainer 설정

기존 Cotainer 가 있다면, VIRTUAL_HOST 설정을 위해 Container를 재생성해야 한다. 자세한 내용은 아래 포스팅을 참고하자.

 

 

Centos Docker config.json 경로 및 디렉토리 구조

Docker Config.json 경로 Centos 기준 Docker config.json 경로 및 디렉토리 구조는 아래와 같다. Containers 디렉토리를 보면, 생성된 CONTAINER ID별로 디렉토리가 생성되며, 하위에 Container에 설정된 config...

graycha.tistory.com

 

 

Was container를 생성할 때,  -e VIRTUAL_HOST=[도메인] 을 반드시 선언해야 한다.

 

그래야, reverse proxy에서 해당 도메인을 기준으로 container를 바라본다.

docker run -d -e VIRTUAL_HOST=[도메인]--name [컨테이너:was-blper] [이미지]

 

 

proxy container를 재시작해주자.

docker [컨테이너:proxy-nginx] restart

 

최종 docker 프로세스는 아래와 같다.

 

docker ps

 

 

nginx default.conf살펴보기

default.conf 를 확인하기 위해서, nginx proxy 컨테이너를 생성할 때 볼륨을 설정해둔 이유다.

 

마운트 된 볼륨 경로의 default.conf 를 확인해보면, 아래와 같이 WAS Container - VIRTUAL_HOST에 대한

upstream 이 자동으로 설정된 것을 확인할 수 있다.

# graycha.net
upstream graycha.net {
	## Can be connected with "bridge" network
	# was-graycha
	server 192.0.0.2:80;
}

# www.blper.kr
upstream www.blper.kr {
	## Can be connected with "bridge" network
	# was-blper
	server 192.0.0.3:80;
}

 

이제  설정한 도메인으로 정상적으로 요청이 들어가는지 확인해보면 끝이다.

댓글