- docker-base 저장소 생성 과정 - chroma_vector:1.0 베이스 이미지 구성 - docker-compose → docker compose 전환 - CI/CD 스크립트 수정 내용
181 lines
4.5 KiB
Markdown
181 lines
4.5 KiB
Markdown
# ChromaDB 베이스 이미지 전환 및 Python 3.13 호환성 해결
|
|
|
|
**날짜**: 2025-07-31
|
|
**작업자**: happybell80 & Claude
|
|
**관련 프로젝트**: docker-base, rb8001, rb10508_test, rb10408_test
|
|
|
|
## 오전 10시 00분
|
|
|
|
### 문제 상황
|
|
|
|
**ChromaDB 초기화 실패**:
|
|
- rb10508_test 컨테이너에서 오류 발생
|
|
- `The sentence_transformers python package is not installed`
|
|
- 원인: CI 빌드 시간 단축을 위해 sentence-transformers 제거 (1GB+ 절약)
|
|
|
|
**배경**:
|
|
- 2025-07-09: 한국어 성능 향상을 위해 sentence-transformers 추가
|
|
- 2025-07-23: 빌드 시간 단축을 위해 torch, sentence-transformers 제거
|
|
- 현재: 프론트엔드-로빙 연결은 정상, 대화 기록만 저장 안됨
|
|
|
|
## 오전 10시 05분
|
|
|
|
### 해결 방안 검토
|
|
|
|
**ChromaDB 임베딩 솔루션 비교분석 문서 확인**:
|
|
1. 베이스 이미지 전략 (선택)
|
|
2. pip wheel 사전 빌드
|
|
3. ChromaDB 기본 임베딩
|
|
4. FastEmbed 경량 라이브러리
|
|
5. sentence-transformers 재추가
|
|
|
|
**베이스 이미지 전략 선택 이유**:
|
|
- 빌드 시간: 10분 → 30초~1분
|
|
- 한국어 성능 우수
|
|
- 여러 로빙이 공유 가능
|
|
|
|
## 오전 10시 07분
|
|
|
|
### docker-base 저장소 생성
|
|
|
|
**구조**:
|
|
```
|
|
docker-base/
|
|
├── README.md
|
|
├── Dockerfile.chroma_vector
|
|
└── .gitignore
|
|
```
|
|
|
|
**Dockerfile.chroma_vector 내용**:
|
|
```dockerfile
|
|
FROM python:3.13-slim
|
|
|
|
# 시스템 패키지 설치
|
|
RUN apt-get update && apt-get install -y \
|
|
build-essential \
|
|
curl \
|
|
git \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# PyTorch 및 sentence-transformers 설치
|
|
RUN pip install --no-cache-dir \
|
|
torch==2.5.1 \
|
|
sentence-transformers==3.3.1 \
|
|
transformers==4.48.0
|
|
|
|
WORKDIR /code
|
|
|
|
LABEL maintainer="ivada_Ro-being" \
|
|
description="Base image for ChromaDB with Korean embedding support" \
|
|
version="1.0"
|
|
```
|
|
|
|
**Gitea 저장소 생성**:
|
|
```bash
|
|
git init
|
|
git remote add origin https://git.ro-being.com/ivada_Ro-being/docker-base.git
|
|
git push -u origin main
|
|
```
|
|
|
|
## 오전 10시 10분
|
|
|
|
### 51124 서버에서 베이스 이미지 빌드
|
|
|
|
**서버 메시지**:
|
|
> 베이스 이미지 빌드가 완료되었습니다. 이제 로컬에서 각 로빙 서비스의 Dockerfile을 수정하여 FROM python:3.13-slim을 FROM chroma_vector:1.0으로 변경하신 후 Gitea에 푸시하시면 자동 배포됩니다.
|
|
|
|
## 오전 10시 15분
|
|
|
|
### 로빙 서비스 Dockerfile 수정
|
|
|
|
**rb10508_test/Dockerfile**:
|
|
```dockerfile
|
|
# 변경 전
|
|
FROM python:3.13-slim
|
|
|
|
# 변경 후
|
|
FROM chroma_vector:1.0
|
|
```
|
|
|
|
**rb8001/Dockerfile**:
|
|
- 동일하게 수정
|
|
|
|
**rb10408_test**:
|
|
- 희재님이 별도로 수정 예정
|
|
|
|
## 오전 10시 20분
|
|
|
|
### Python 3.13 호환성 문제 발견
|
|
|
|
**CI/CD 배포 중 오류**:
|
|
```
|
|
ModuleNotFoundError: No module named 'pipes'
|
|
```
|
|
|
|
**원인**:
|
|
- Python 3.13에서 pipes 모듈 제거
|
|
- docker-compose가 Python 3.13과 호환되지 않음
|
|
|
|
## 오전 10시 25분
|
|
|
|
### CI/CD 스크립트 수정
|
|
|
|
**해결 방법**:
|
|
- `docker-compose` → `docker compose` 변경
|
|
- Docker 20.10+ 내장 compose 명령 사용
|
|
|
|
**수정 파일**:
|
|
- rb10508_test/.gitea/workflows/cicd.yml
|
|
- rb8001/.gitea/workflows/cicd.yml
|
|
|
|
**변경 내용**:
|
|
```bash
|
|
# 변경 전
|
|
docker-compose down
|
|
docker-compose up -d --build
|
|
docker-compose ps
|
|
docker-compose logs
|
|
|
|
# 변경 후
|
|
docker compose down
|
|
docker compose up -d --build
|
|
docker compose ps
|
|
docker compose logs
|
|
```
|
|
|
|
## 결과
|
|
|
|
### 완료된 작업
|
|
1. ✅ docker-base 저장소 생성 (chroma_vector:1.0)
|
|
2. ✅ 51124 서버에 베이스 이미지 빌드
|
|
3. ✅ rb10508_test, rb8001 Dockerfile 수정
|
|
4. ✅ Python 3.13 호환성을 위한 CI/CD 수정
|
|
5. ✅ 모든 변경사항 Gitea에 push
|
|
|
|
### 개선 효과
|
|
- ChromaDB 벡터 임베딩 정상 작동
|
|
- 빌드 시간: 10분 → 1분
|
|
- 한국어 임베딩 성능 유지
|
|
- Python 3.13 호환성 확보
|
|
|
|
## 교훈
|
|
|
|
1. **베이스 이미지 전략의 효과**
|
|
- 공통 의존성을 베이스 이미지로 분리
|
|
- CI/CD 빌드 시간 대폭 단축
|
|
- 여러 서비스가 일관된 환경 공유
|
|
|
|
2. **Python 버전 업그레이드 시 주의**
|
|
- deprecated 모듈 사전 확인 필수
|
|
- docker-compose 같은 도구의 호환성 검토
|
|
- Docker 내장 명령 우선 사용 권장
|
|
|
|
3. **단계적 문제 해결**
|
|
- ChromaDB 문제 → 베이스 이미지로 해결
|
|
- Python 3.13 문제 → docker compose로 전환
|
|
- 각 문제를 독립적으로 해결
|
|
|
|
4. **문서화의 중요성**
|
|
- 이전 결정사항 히스토리 추적
|
|
- 다양한 해결 방안 비교 분석
|
|
- 향후 유사 문제 발생 시 참고 가능 |