diff --git a/Dockerfile b/Dockerfile index 2ae2fe2..954ee80 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,7 @@ -# 1단계: 에이전트 다운로드 +# 1단계: OTEL Java 에이전트 다운로드 FROM alpine:3.20 AS otel ARG OTEL_VERSION=2.21.0 + RUN apk add --no-cache curl && \ curl -fL \ https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/download/v${OTEL_VERSION}/opentelemetry-javaagent.jar \ @@ -9,15 +10,12 @@ RUN apk add --no-cache curl && \ # 2단계: Tomcat 이미지 FROM tomcat:9.0-jdk17-temurin -# non-root 계정 생성 (UID/GID 1000:1000) +# 실행 계정 생성 (uid=1000, gid=1000) RUN groupadd -g 1000 job && \ useradd -u 1000 -g 1000 -m job -# Tomcat 디렉토리 권한을 1000:1000 으로 변경 -RUN chown -R 1000:1000 /usr/local/tomcat - ENV TZ=Asia/Seoul \ - OTEL_SERVICE_NAME=sayis_service \ + OTEL_SERVICE_NAME=sayit-helpdesk-service \ OTEL_EXPORTER_OTLP_ENDPOINT=http://192.168.100.203:4317 \ OTEL_EXPORTER_OTLP_PROTOCOL=grpc \ OTEL_RESOURCE_ATTRIBUTES="deployment.environment=prod" \ @@ -26,17 +24,21 @@ ENV TZ=Asia/Seoul \ # 타임존 적용 RUN ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime -# 에이전트 복사 +# OTEL 에이전트 복사 COPY --from=otel /opentelemetry-javaagent.jar /opt/opentelemetry-javaagent.jar -# 기존 앱 제거 +# 기본 ROOT 앱 제거 RUN rm -rf /usr/local/tomcat/webapps/* -# Maven 빌드된 WAR 복사 (target/sayis.war 기준) -COPY target/sayis.war /usr/local/tomcat/webapps/ROOT.war +# Maven이 생성한 실제 WAR 파일 복사 +# *** 핵심: 이름이 sayit-helpdesk.war 임 *** +COPY target/sayit-helpdesk.war /usr/local/tomcat/webapps/ROOT.war -# 이후부터는 1000:1000 계정으로 동작 -USER 1000:1000 +# 소유권 맞추기 (컨테이너 실행 사용자 job 기준) +RUN chown -R 1000:1000 /usr/local/tomcat + +# 컨테이너 실행 사용자 변경 +USER job EXPOSE 8080 -CMD ["catalina.sh","run"] \ No newline at end of file +CMD ["catalina.sh", "run"] \ No newline at end of file