반응형
무중단 배포 - Tomcat 구성
앞 장에서 설치한 Nginx를 통해 웹서버 포트(8084번 포트)에 들어온 요청을 톰캣서버 포트로 전달 합니다.
톰캣서버는 블루 모드(8091번 포트)과 그린 모드(8092번 포트) 2개 포트가 Nginx 서버와 연결되어 구동되어진 서버로 연결이 됩니다.
파일 구조
파일명 | 설명 |
Dockerfile | 도커 구동을 위한 도커파일 |
deploy.sh | 배치 실행 시 blue/green을 구분하여 실행을 위한 쉘스크립트 |
docker-compose.blue.yml | 무중단 배포 중 blue 모드용 compose 파일 |
docker-compose.green.yml | 무중단 배포 중 green 모드용 compose 파일 |
ROOT.war | 웹 배포용 WAR 파일 |
설정
1. Dockerfile
FROM tomcat:8
COPY ROOT.war /usr/local/tomcat/webapps
# java option 추가
#ENV JAVA_OPTS="-DsvrNo=4"
# docker container의 timezone을 서울로 변경
ENV TZ=Asia/Seoul
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
EXPOSE 8080
CMD ["catalina.sh", "run"]
2. deploy.sh
#!/bin/bash
DOCKER_APP_NAME=projectname
EXIST_BLUE=$(/usr/local/bin/docker-compose -p ${DOCKER_APP_NAME}-blue -f docker-compose.blue.yml ps | grep Up)
if [ -z "$EXIST_BLUE" ]; then
echo "blue up"
/usr/local/bin/docker-compose -p ${DOCKER_APP_NAME}-blue -f docker-compose.blue.yml up -d --build
sleep 10
/usr/local/bin/docker-compose -p ${DOCKER_APP_NAME}-green -f docker-compose.green.yml down
else
echo "green up"
/usr/local/bin/docker-compose -p ${DOCKER_APP_NAME}-green -f docker-compose.green.yml up -d --build
sleep 10
/usr/local/bin/docker-compose -p ${DOCKER_APP_NAME}-blue -f docker-compose.blue.yml down
fi
- Docker_APP_NAME에는 프로젝트명칭을 적어줍니다.
3. docker-compose.blue.yml
version: '3'
services:
app:
build: .
image: projectname
environment:
- JVM_OPTS=-Xmx1g -Xms1g -XX:MaxPermSize=1024m
ports:
- 8091:8080
volumes:
- /home/user/files:/usr/local/files
container_name: projectname_blue
- ports에는 blue모드로 대기할 포트(8091)와 Dockerfile을 통해 expose된 포트(8080)를 적어줍니다.
4. docker-compose.green.yml
version: '3'
services:
app:
build: .
image: projectname
environment:
- JVM_OPTS=-Xmx1g -Xms1g -XX:MaxPermSize=1024m
ports:
- 8092:8080
volumes:
- /home/user/files:/usr/local/files
container_name: projectname_green
- ports에는 green모드로 대기할 포트(8092)와 Dockerfile을 통해 expose된 포트(8080)를 적어줍니다.
Docker 실행
nginx서버를 먼저 구동합니다.
이전 글(2020/12/22 - [DEV/CICD] - 무중단 배포(Blue-Green Deployment) - Nginx설치)을 참고하여 Nginx를 구동합니다.
run_nginx.sh
다음은 Docker를 통해 Tomcat을 실행합니다.
deploy.sh
도커 프로세스 확인
- nginx와 블루모드로 구동된 tomcat 웹서버 2개가 구동되어 있음을 확인합니다.
웹 서버 로그 확인
docker logs -f $(docker ps -aq --filter name=도커컨테이너명)
웹서버 로그를 보기 위해서 docker ps를 통해 도커컨테이너명을 조회 후 위 명령어를 치면 톰캣 서버 로그를 확인 할 수 있습니다.
반응형
'DEV > CICD' 카테고리의 다른 글
무중단 배포(Blue-Green Deployment) - Nginx설치 (0) | 2020.12.22 |
---|---|
무중단 배포(Blue-Green Deployment) - 도커 설치 (0) | 2020.12.21 |
무중단 배포(Blue-Green Deployment) (0) | 2020.12.20 |
Nexus Repository 설정 (1) | 2020.12.14 |
오프라인에서 CICD 구성하기-4(Git 설치) (0) | 2020.08.20 |