반응형
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) 사용하기
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 |