celina의 이것저것
[Spring AI] 나만의 Chat 서비스 만들기3 (Docker 환경 구축, Open Web UI RAG 활용) 본문
[Spring AI] 나만의 Chat 서비스 만들기3 (Docker 환경 구축, Open Web UI RAG 활용)
celinayk 2025. 12. 2. 00:26이제 직접 만든 Spring API와 openwebui를 활용하여 실제로 웹으로 접속해서 나만의 챗봇을 만들것이다.
이번에 구현할 사항은 다음과 같다.
1. Docker 환경 구성
2. Open Web UI 설치 및 연결
3. RAG 기능 구현
1. Docker 환경 구성
프로젝트에서 제공하는 서비스들은 전부 docker로 만들고 관리할 것이다.
- postgres: RAG용 벡터 저장소
- ollama: LLM 백엔드
- spring-api: 구현한 API
- open-webui: 사용자 인터페이스
services:
ollama:
image: ollama/ollama:latest
container_name: ollama
ports:
- "11434:11434"
volumes:
- ollama_data:/root/.ollama
networks:
- chatbot-network
restart: unless-stopped
open-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: open-webui
volumes:
- open-webui_data:/app/backend/data
ports:
- "3000:8080"
environment:
OLLAMA_BASE_URL: http://ollama:11434
OPENAI_API_BASE_URL: http://spring-api:8080/v1
OPENAI_API_KEY: dummy
WEBUI_SECRET_KEY: secret-key-change-in-production
depends_on:
- ollama
- spring-api
networks:
- chatbot-network
restart: unless-stopped
postgres:
image: pgvector/pgvector:pg16
container_name: postgres
environment:
POSTGRES_DB: teamsparta_vector
POSTGRES_USER: 비밀
POSTGRES_PASSWORD: 비밀
POSTGRES_INITDB_ARGS: "--encoding=UTF8 --locale=en_US.UTF-8"
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data
command: postgres -c shared_preload_libraries=vector
networks:
- chatbot-network
restart: unless-stopped
spring-api:
build:
context: .
dockerfile: Dockerfile
container_name: spring-api
ports:
- "8080:8080"
environment:
SPRING_PROFILES_ACTIVE: docker
OLLAMA_BASE_URL: http://ollama:11434
ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY}
depends_on:
- ollama
- postgres
networks:
- chatbot-network
restart: unless-stopped
volumes:
ollama_data:
open-webui_data:
postgres_data:
networks:
chatbot-network:
driver: bridge
여기서 조금 어려웠던점은 내가 만든 spring코드를 도커로 띄운다는 점이다.
다른 PostgreSQL, Ollama, Open Web UI는 이미지를 pull해서 그냥 쓰면 되는데
나의 Spring Boot 애플리케이션은 내가 직접 인텔리제이에서 만든건데 어떻게 컨테이너 이미지로 띄우지? 라는점 이다.
ㄴ Dockerfile을 이용하자! 하나 배웠다!!!!
두번째는 application-docker.yml이 왜 필요한가?
로컬에서 올라마를 실행할때랑 도커로 실행할때 다르다. 즉 Docker 환경에 맞는 설정을 해주는 파일이다.
application.yml에서 올라마모델의 주소는 이렇다.
base-url: http://localhost:11434
spring-api 컨테이너가 http://localhost:11434로 요청하면
→ 자기 자신(spring-api 컨테이너) 내부를 찾음 ❌
→ ollama 컨테이너는 완전히 다른 곳에 있음!
올바른 주소: http://ollama:11434
- ollama는 컨테이너 이름
- Docker가 자동으로 IP 주소로 변환해줌
아직은 좀 어려운것같다...!! 그래서 도커관련해서도 계속 공부가 필요한것같다
2. Open Web UI 설치 및 연결


내가 기존에 만든 올라마 모델과, 클로드 모델을 선택하여 이렇게 질문을 하고 답변을 받을 수 있다.
3. RAG 기능 구현
문서를 바탕으로 답을 하고, 문서에 없으면 답을 하지 않는다.


'Project > MSA JAVA 3기' 카테고리의 다른 글
| Kubernetes에 대해 공부해보자 (2) | 2026.01.11 |
|---|---|
| Docker에 대해 공부해보자 (0) | 2026.01.09 |
| [Spring AI] 실시간 스트림 처리 도중 에러 해결 (0) | 2025.12.01 |
| [Spring AI] 나만의 Chat 서비스 만들기2 (동적으로 LLM모델 선택, 실시간 처리) (0) | 2025.11.30 |
| [Spring AI] 나만의 Chat 서비스 만들기 (0) | 2025.11.26 |