이 문서는 WSL2 환경에서 작동 중인 Docker에 Ollama를 띄우기 위해 필요한 사항을 나열한다. 특히 필요한 Gen AI Model을 자동으로 다운로드 받도록 설정할 수 있어서 편리하다.
이 내용에 추가해 Open WebUI와 PostgreSQL 컨테이너를 같이 뜨도록 추가하면 편리하게 RAG 구성을 시험할 수 있다.
필요한 파일 목록
Dockerfile
entrypoint.sh
docker-compose.yml
Dockerfile
Docker Image 생성을 위해 준비한 Dockerfile이다. 컨테이너 생성 때의 엔트리포인트를 쉘스크립트로 지정한다.
FROM ollama/ollama
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
entrypoint.sh
Docker 컨테이너가 생성될 때 ollama를 실행하고 완전히 뜰 때까지 대기했다가 ollama에서 사용할 Gen AI 모델을 다운로드 받아 설치한다.
#!/bin/bash
set -e
# Ollama 서버 백그라운드 실행
ollama serve &
OLLAMA_PID=$!
# 서버가 뜰 때까지 대기 (bash 내장 기능으로 포트 연결 시도)
while ! (echo > /dev/tcp/localhost/11434) 2>/dev/null; do
sleep 1
done
# 모델 다운로드
ollama pull mistral
ollama pull nomic-embed-text
# Ollama 서버를 포그라운드로 유지
wait $OLLAMA_PID
docker-compose.yml
Docker 컴포즈를 이용해 ollama를 실행한다. 실제 컨테이너를 띄울 때는 나머지 파일들과 함께 저장된 디렉토리에서 이 파일만 사용하면 된다.
version: '3.8'
services:
ollama:
build:
context: .
dockerfile: Dockerfile
container_name: ollama
restart: always
ports:
- "11434:11434"
environment:
- OLLAMA_KEEP_ALIVE=-1
- OLLAMA_MODELS=/ollama/models
volumes:
- ~/ollama_data:/root/.ollama
- ~/ollama_data/models:/ollama/models
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
Docker 컨테이너를 만들 때는 아래 명령을 사용하면 된다.
docker compose -f docker-compose.yml up -d --build
또는 간단히 이렇게 해도 된다.
docker compose up
Docker 컨테이너가 잘 실행된 후에 ollama를 직접 실행해서 Gen AI에 질문을 하고 싶다면 아래와 같이 하면 된다.
docker exec -it ollama ollama run mistral
이렇게 하면 mistral 모델이 실행되고 프롬프트가 뜨게 된다.
댓글 없음:
댓글 쓰기