Ollama + WebUI (Docker Compose)#
이번 세션에서는 Docker Compose를 사용해 Ollama 서버와 Open-WebUI를 동시에 실행하는 전체 스택을 구성합니다.
단일 docker compose up 명령만으로 LLM 서버와 웹 인터페이스가 함께 기동됩니다.
디렉터리 구조#
└── ollama-webui/
└── docker-compose.yaml
docker-compose.yaml 작성#
version: "3.8"
services:
ollama:
image: ollama/ollama
container_name: ollama
volumes:
- ollama-data:/root/.ollama
ports:
- "11434:11434"
open-webui:
image: ghcr.io/open-webui/open-webui:git-1349bc4-cuda
container_name: open-webui
depends_on:
- ollama
ports:
- "3000:8080"
volumes:
- open-webui-data:/app/backend/data
extra_hosts:
- "host.docker.internal:host-gateway"
restart: always
volumes:
ollama-data:
open-webui-data:
ollama
ollama/ollama이미지를 사용해 로컬 LLM 서버 실행모델과 설정을
ollama-data볼륨에 영구 저장포트
11434로 API 요청 수신
open-webui
Open-WebUI 인터페이스를 실행하는 컨테이너
호스트
3000포트를 컨테이너8080으로 매핑사용자 데이터 및 캐시를
open-webui-data볼륨에 저장depends_on으로 Ollama 서비스 기동을 보장extra_hosts설정으로 호스트 접근 지원
기존 리소스 정리#
docker compose를 통한 스택을 실행하기 전에 기존에 실행 중인 컨테이너들을 정리합니다.
docker stop ollama open-webui
docker rm ollama open-webui
전체 스택 실행#
# Compose 파일이 위치한 디렉터리에서
docker compose up -d
-d: 백그라운드 실행
서비스 상태 확인#
docker compose ps
ollama와open-webui컨테이너가 Up 상태인지 확인합니다.
서비스 로그 확인#
docker compose logs -f
-f: 실시간(follow) 로그 스트리밍
Web UI 접속#
브라우저에서 http://localhost:3000 접속
다운로드된 LLM 모델(예:
gemma3)을 선택 후 프롬프트 입력 및 Send 클릭
스택 중지 및 정리#
docker compose down --volumes
--volumes: 정의된 볼륨까지 함께 삭제
※ 주의 : 볼륨을 삭제할 경우 다운로드한 모델까지 같이 삭제됨
🎉축하합니다!
이로써 Docker를 이용하여 로컬 ChatGPT 환경을 성공적으로 구축하였습니다.