반응형
SMALL
기존 온프레미스 환경에서 두 개의 서버로 구성되어있으며, 1번 서버에는 하나의 ZEUS에 Application 1, Application 2, Application 3 3개의 서비스가 돌아가고 있어 동일하게 3개 PJT를 한 번에 빌드하여 실행시키는 방법을 수십 번의 시도 끝에 아래의 도커 파일을 완성하였다.
2024.06.26 - [#IT 업무노트] - [Cluster 전환 #5] MAVEN POM 파일 라이브러리 가져오기(Local, Url, Maven 저장소)
2024.04.17 - [#IT 업무노트] - [Cluster 전환 #4] 공통API(사내API) 사용하기
[Cluster 전환 #4] 공통API(사내API) 사용하기
Legacy 시스템 컨테이너 전환을 진행하면서 기존 SMTP 서버 폐기가 필요하기 때문에 사내에서 제공해주는 공통API를 사용하는 방법에 대해 알아보고자 합니다. 제가 몸담고 있는 회사를 기준으로
ggumidr.com
1. Maven 형태로의 변환 pom 파일 전환
2024.06.26 - [#IT 업무노트] - [Cluster 전환 #5] MAVEN POM 파일 라이브러리 가져오기(Local, Url, Maven 저장소)
2. 프로젝트 구조
conf
> context.xml (사용안함)
> server.xml
k8s
> deploy.yaml
> ingress.yaml
> service.yaml
library
> library 목록 (폐쇄망으로 로컬레포지토리 구성)
pipelines
> pipieline.yaml
Project_A
> src, pom.xml, src/main/webapp/META-INF/context.xml .....(context.xml은 각 프로젝트 별 접속 DB가 다를 경우 현 위치에 넣는다)
Project_B
> src, pom.xml, src/main/webapp/META-INF/context.xml .....
Project_C
> src, pom.xml, src/main/webapp/META-INF/context.xml .....
Dockerfile
3. Dockerfile
########## Stage 1: Build projects ##########
# myacr/agent/build/java8-maven:3.8.6 이미지를 기반으로 새로운 빌드 스테이지를 시작합니다.
# 이미지에는 Java 8과 Maven 3.8.6이 설치되어 있습니다.
# AS builder는 이 스테이지의 이름을 builder로 설정하여 이후에 참조할 수 있도록 합니다.
FROM myacr/agent/build/java8-maven:3.8.6 AS builder
# Set working directory
# 컨테이너 내에서 작업 디렉토리를 /ipapp으로 설정합니다.
WORKDIR /ipapp
# Copy project files
# Build each project
# 각 프로젝트와 라이브러리 파일을 컨테이너의 작업 디렉토리로 복사합니다.
# mvn clean package -Dmaven.test.skip=true 명령을 사용하여 각 프로젝트를 빌드합니다.
# -f 옵션은 특정 POM 파일을 지정합니다.
# clean은 이전 빌드 아티팩트를 제거합니다.
# package는 프로젝트를 패키징합니다 (일반적으로 JAR 또는 WAR 파일로).
# -Dmaven.test.skip=true는 테스트를 건너뜁니다
COPY ./library /ipapp/library
COPY ./Project_A /ipapp/Project_A
RUN mvn -f /ipapp/Project_A/pom.xml clean package -Dmaven.test.skip=true
COPY ./Project_B /ipapp/Project_B
RUN mvn -f /ipapp/Project_B/pom.xml clean package -Dmaven.test.skip=true
COPY ./Project_C /ipapp/Project_C
RUN mvn -f /ipapp/Project_C/pom.xml clean package -Dmaven.test.skip=true
########## Stage 2: Run Tomcat ##########
# myacr/docker/tomcat:9.0.83-jdk8-corretto-al2-umask 이미지를 기반으로 새로운 실행 스테이지를 시작합니다.
# 이미지에는 Tomcat 9.0.83과 JDK 8이 포함되어 있습니다.
FROM myacr/docker/tomcat:9.0.83-jdk8-corretto-al2-umask
# Copy built WAR files to Tomcat webapps directory
# 빌드 스테이지(builder)에서 생성된 WAR 파일을 Tomcat의 webapps 디렉토리로 복사합니다.
# 각각의 프로젝트에 대해 빌드된 WAR 파일을 복사하여 Tomcat에서 실행될 수 있도록 합니다.
COPY --from=builder /ipapp/Project_A/target/*.war /usr/local/tomcat/webapps/Project_A.war
COPY --from=builder /ipapp/Project_B/target/*.war /usr/local/tomcat/webapps/Project_B.war
COPY --from=builder /ipapp/Project_C/target/*.war /usr/local/tomcat/webapps/Project_C.war
# 3개의 WAR파일이 하나의 톰캣에서 실행 시킬 수 있도록 설정 된 server.xml 을 컨테이너로 복사합니다.
ADD ./conf/server.xml /usr/local/tomcat/conf/
# Start Tomcat
# catalina.sh run 명령을 사용하여 Tomcat 서버를 시작합니다.
# 이 명령은 Tomcat이 포그라운드에서 실행되도록 하여 컨테이너가 계속 실행되도록 합니다.
CMD ["catalina.sh", "run"]
반응형
'#IT 업무노트' 카테고리의 다른 글
[IT용어] Go Live, Cut Over, 컨센서스(Consensus), Ground rule 란? (0) | 2024.06.29 |
---|---|
[Cluster 전환 #7] N개 프로젝트 하나의 Tomcat으로 실행하기 (0) | 2024.06.27 |
[Cluster 전환 #5] MAVEN POM 파일 라이브러리 가져오기(Local, Url, Maven 저장소) (0) | 2024.06.27 |
마일스톤과 간트차트 (0) | 2024.05.23 |
워터폴과 애자일에서의 WBS 작성하기 (0) | 2024.05.22 |