mirror of
https://github.com/hwanny1128/HGZero.git
synced 2025-12-06 21:56:24 +00:00
185 lines
4.6 KiB
Markdown
185 lines
4.6 KiB
Markdown
# 백엔드 컨테이너 이미지 작성 결과
|
|
|
|
## 작업 개요
|
|
- 작업일시: 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)로 컨테이너 실행
|
|
- **병렬 빌드**: 각 서비스는 독립적으로 빌드 가능 (서브 에이전트 활용)
|