docs: ChromaDB 베이스 이미지 전환 및 Python 3.13 호환성 트러블슈팅

- docker-base 저장소 생성 과정
- chroma_vector:1.0 베이스 이미지 구성
- docker-compose → docker compose 전환
- CI/CD 스크립트 수정 내용
This commit is contained in:
happybell80 2025-07-31 10:30:55 +09:00
parent 44a307e919
commit edf089b3de

View File

@ -0,0 +1,181 @@
# 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. **문서화의 중요성**
- 이전 결정사항 히스토리 추적
- 다양한 해결 방안 비교 분석
- 향후 유사 문제 발생 시 참고 가능