# 백엔드 컨테이너 이미지 작성 결과 ## 작업 개요 - 작업일시: 2025-10-27 - 대상 서비스: user, meeting, stt, ai, notification (총 5개) - 작업자: 주영 (DevOps) ## 작업 진행 상황 ### 1. 서비스명 확인 ✅ settings.gradle에서 서비스명 확인 완료: ```bash cat settings.gradle ``` 확인된 서비스: - common (공통 모듈) - user - meeting - stt - ai - notification ### 2. bootJar 설정 확인 ✅ 모든 서비스의 build.gradle에 bootJar 설정이 이미 되어 있음을 확인: - user/build.gradle: `archiveFileName = 'user.jar'` - meeting/build.gradle: `archiveFileName = 'meeting.jar'` - stt/build.gradle: `archiveFileName = 'stt.jar'` - ai/build.gradle: `archiveFileName = 'ai.jar'` - notification/build.gradle: `archiveFileName = 'notification.jar'` ### 3. Dockerfile 생성 ✅ deployment/container/Dockerfile-backend 생성 완료: ```dockerfile # Build stage FROM openjdk:23-oraclelinux8 AS builder ARG BUILD_LIB_DIR ARG ARTIFACTORY_FILE COPY ${BUILD_LIB_DIR}/${ARTIFACTORY_FILE} app.jar # Run stage FROM openjdk:23-slim ENV USERNAME=k8s ENV ARTIFACTORY_HOME=/home/${USERNAME} ENV JAVA_OPTS="" # Add a non-root user RUN adduser --system --group ${USERNAME} && \ mkdir -p ${ARTIFACTORY_HOME} && \ chown ${USERNAME}:${USERNAME} ${ARTIFACTORY_HOME} WORKDIR ${ARTIFACTORY_HOME} COPY --from=builder app.jar app.jar RUN chown ${USERNAME}:${USERNAME} app.jar USER ${USERNAME} ENTRYPOINT [ "sh", "-c" ] CMD ["java ${JAVA_OPTS} -jar app.jar"] ``` ### 4. Gradle 빌드 수행 ✅ 모든 서비스의 jar 파일 빌드 완료: ```bash ./gradlew clean bootJar --no-daemon ``` 빌드 결과: ``` BUILD SUCCESSFUL in 17s 37 actionable tasks: 34 executed, 3 up-to-date ``` 생성된 jar 파일 확인: ```bash ls -lh user/build/libs/user.jar meeting/build/libs/meeting.jar stt/build/libs/stt.jar ai/build/libs/ai.jar notification/build/libs/notification.jar ``` 결과: - ai.jar: 86M - meeting.jar: 86M - notification.jar: 79M - stt.jar: 92M - user.jar: 77M ### 5. Docker 이미지 빌드 ⚠️ (대기 중) **현재 상태**: Docker 데몬이 실행되지 않아 이미지 빌드를 진행할 수 없습니다. **오류 메시지**: ``` ERROR: Cannot connect to the Docker daemon at unix:///Users/daewoong/.docker/run/docker.sock. Is the docker daemon running? ``` **필요 조치**: 1. Docker Desktop 실행 2. Docker 데몬 정상 실행 확인: ```bash docker ps docker info ``` **준비된 빌드 명령어**: 각 서비스별 Docker 이미지 빌드 명령어는 다음과 같습니다: #### user 서비스 ```bash docker build \ --platform linux/amd64 \ --build-arg BUILD_LIB_DIR="user/build/libs" \ --build-arg ARTIFACTORY_FILE="user.jar" \ -f deployment/container/Dockerfile-backend \ -t user:latest . ``` #### meeting 서비스 ```bash docker build \ --platform linux/amd64 \ --build-arg BUILD_LIB_DIR="meeting/build/libs" \ --build-arg ARTIFACTORY_FILE="meeting.jar" \ -f deployment/container/Dockerfile-backend \ -t meeting:latest . ``` #### stt 서비스 ```bash docker build \ --platform linux/amd64 \ --build-arg BUILD_LIB_DIR="stt/build/libs" \ --build-arg ARTIFACTORY_FILE="stt.jar" \ -f deployment/container/Dockerfile-backend \ -t stt:latest . ``` #### ai 서비스 ```bash docker build \ --platform linux/amd64 \ --build-arg BUILD_LIB_DIR="ai/build/libs" \ --build-arg ARTIFACTORY_FILE="ai.jar" \ -f deployment/container/Dockerfile-backend \ -t ai:latest . ``` #### notification 서비스 ```bash docker build \ --platform linux/amd64 \ --build-arg BUILD_LIB_DIR="notification/build/libs" \ --build-arg ARTIFACTORY_FILE="notification.jar" \ -f deployment/container/Dockerfile-backend \ -t notification:latest . ``` ### 6. 이미지 확인 (대기 중) Docker 이미지 빌드 완료 후 다음 명령어로 확인: ```bash docker images | grep -E "user|meeting|stt|ai|notification" ``` ## 다음 단계 1. **즉시 수행**: Docker Desktop 실행 2. **Docker 확인**: `docker ps` 명령으로 정상 작동 확인 3. **이미지 빌드**: 위의 준비된 명령어들을 순차적으로 실행 4. **빌드 검증**: 모든 이미지가 정상적으로 생성되었는지 확인 5. **결과 업데이트**: 이 문서에 최종 결과 기록 ## 참고사항 - **플랫폼**: macOS (Darwin 22.1.0) - **Docker 빌드 플랫폼**: linux/amd64 (크로스 플랫폼 빌드) - **베이스 이미지**: - Builder: openjdk:23-oraclelinux8 - Runtime: openjdk:23-slim - **보안**: non-root 사용자(k8s)로 컨테이너 실행 - **병렬 빌드**: 각 서비스는 독립적으로 빌드 가능 (서브 에이전트 활용)