티스토리 뷰
서버 구성도
Docker를 활용한 서버 구성도며, 하나의 서버에서 Docker container 확장을 통한 WAS 운영이 목표였다. Docker jwilder/nginx-proxy 를 통한 Reverse Proxy 환경을 구현할 수 있었고, 아래와 같은 서버 구성으로 서비스를 운영 중이다.
Docker Reverse Proxy 설정
jwilder/nginx-proxy 이미지를 내려받아, nginx proxy 컨테이너를 구동시켜야 한다.
docker pull 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 로그 확인을 위한 볼륨 설정
- /var/run/docker.sock:/tmp/docker.sock:ro
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 프로세스 정보를 확인할 수 있다.
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 프로세스는 아래와 같다.
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;
}
이제 설정한 도메인으로 정상적으로 요청이 들어가는지 확인해보면 끝이다.
'프로그래밍 > Docker' 카테고리의 다른 글
Centos Docker config.json 경로 및 디렉토리 구조 (0) | 2021.09.19 |
---|---|
Docker 이미지 이름 재설정 방법 (0) | 2021.09.10 |
[Docker] Container SSL인증서 - Let`s Encrypt 적용 (0) | 2021.03.24 |
[Docker] container crontab 설정 (0) | 2021.03.24 |
[Docker] 기본 명령어 정리 (0) | 2021.03.21 |