728x90
이번 포스팅에서는 Docker를 이용하여 ChromaDB와 데이터 생성 컨테이너를 띄우고 연동하는 방법을 설명합니다. 데이터베이스와 데이터 생성 서비스를 각각 독립된 컨테이너로 관리하면서 효율적으로 연동하는 과정을 단계별로 살펴보겠습니다.
1. Docker 환경 설정
우선, Docker가 설치되어 있어야 합니다. Docker를 설치하는 방법은 이전 포스팅을 참고하세요.
https://only-advance.tistory.com/4
2. Docker 컨테이너 준비
이 프로젝트에서는 두 개의 이미지를 사용합니다:
- ChromaDB 컨테이너: 데이터를 저장하고 검색할 데이터베이스 역할.
- 데이터 생성 컨테이너: ChromaDB에 데이터를 삽입하는 역할.
필요한 Dockerfile과 스크립트를 각각 생성합니다.
2.1 ChromaDB 컨테이너 생성
먼저 ChromaDB 서버를 실행할 Dockerfile을 작성합니다.
FROM python:3.9-slim
# 필요한 패키지 설치
RUN pip install chromadb
# ChromaDB 서버 실행 명령
CMD ["chromadb", "start", "--host", "0.0.0.0", "--port", "8000"]
빌드하고 Docker 이미지를 생성합니다
docker build -t chromadb-server .
컨테이너를 실행합니다
docker run -d --name chromadb-container -p 8001:8000 chromadb-server
이제 ChromaDB 서버가 8001 포트에서 실행됩니다.
2.2. 데이터 생성 컨테이너 생성
다음으로 ChromaDB에 데이터를 삽입할 스크립트를 작성합니다.
# data.py
import chromadb
# ChromaDB 클라이언트 설정
client = chromadb.HttpClient(host='127.0.0.1',port=8000)
# 샘플 데이터 생성 및 삽입
collection = client.get_or_create_collection("sample_collection")
data = [
{"id": "1", "text": "Hello, world!", "metadata": {"category": "greeting"}},
{"id": "2", "text": "Docker is amazing!", "metadata": {"category": "tech"}}
]
for item in data:
collection.add(ids = item["id"],
documents=item["text"],
metadatas=item["metadata"])
print("Data inserted successfully.")
# Dockerfile
FROM python:3.9-slim
WORKDIR /app
# 필요한 패키지 설치
COPY requirements.txt .
RUN pip install -r requirements.txt
# 스크립트 복사 및 실행
COPY data.py .
CMD ["python", "data.py"]
# requirements.txt
chromadb
requests
이미지를 빌드합니다:
docker build -t data-generator .
컨테이너를 실행합니다:
docker run --rm --name data-generator --network host data-generator
3. 연동 확인
데이터 생성 컨테이너가 실행되면 ChromaDB에 데이터가 삽입됩니다. 이를 확인하려면 다음과 같이 확인 스크립트를 실행해 봅니다.
# verify.py
import chromadb
client = chromadb.HttpClient(host='127.0.0.1',port=8000)
collection = client.get_collection("sample_collection")
print(collection.get_all())
로컬 환경에서 실행하면 ChromaDB에 저장된 데이터를 확인할 수 있습니다.
4. 결론
Docker를 활용하여 ChromaDB와 데이터 생성 컨테이너를 연동하면, 데이터 삽입과 검색을 독립적으로 처리할 수 있어 시스템을 모듈화할 수 있습니다. 이 방식은 특히 개발 환경에서 데이터베이스와 데이터 로직을 별도로 관리할 때 유용합니다.
Reference
728x90
'Docker' 카테고리의 다른 글
[Docker] NGINX란? Docker와 FastAPI를 활용한 서버 구축 실습 (6) | 2024.11.17 |
---|---|
[Docker] Zookeeper와 Kafka 설치 및 연동 가이드: Docker Compose로 간편하게 설정하기 (0) | 2024.11.10 |
[Docker] Docker와 PostgreSQL을 이용한 데이터 생성 시스템 구축하기 (2) | 2024.10.06 |
[Docker] DockerFile 명령어 정리: ADD, COPY, CMD, ENTRYPOINT, ARG, ENV 등 (6) | 2024.09.25 |
[Docker] Ubuntu 22.04 환경에서 도커 설치하기 (0) | 2024.09.23 |