2025년 4월 30일 수요일

WSL2 Docker에서 Ollama 띄우기

 이 문서는 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 모델이 실행되고 프롬프트가 뜨게 된다.

댓글 없음:

댓글 쓰기