티스토리 뷰
project/로컬 LLM + RAG 기반 AI 채팅봇 만들기
로컬 LLM + RAG 기반 AI 채팅봇 만들기 # 38 - 백엔드 Docker 컨테이너화 및 배포
octo54 2025. 3. 1. 01:42반응형
로컬 LLM + RAG 기반 AI 채팅봇 만들기
6.1 백엔드 Docker 컨테이너화 및 배포
이제 Ktor 기반의 백엔드 서버를 Docker 컨테이너로 패키징하여 배포 가능하도록 설정합니다.
Docker를 활용하면 환경에 관계없이 쉽게 배포하고, 운영 중인 서버를 일관성 있게 유지할 수 있습니다.
1) Docker를 사용하는 이유
✅ Docker 배포의 장점
- 환경 일관성 유지 → 운영 체제(OS)와 관계없이 동일한 환경에서 실행 가능
- 간편한 배포 → 컨테이너 이미지를 사용하면 배포가 용이
- 확장성 향상 → 여러 컨테이너를 병렬 실행하여 성능 확장 가능
2) Docker 설치 및 기본 설정
✅ ① Docker 설치
- Windows / Mac: Docker 공식 사이트에서 설치
- Linux (Ubuntu):
sudo apt update
sudo apt install docker.io
- Docker 버전 확인
docker -v
📌 예상 결과:
Docker version 24.0.5, build 123456
3) Dockerfile 작성 (Ktor 애플리케이션 컨테이너화)
✅ ① 프로젝트 루트 디렉토리에 Dockerfile 생성
# 1. JDK 17을 포함한 기본 이미지 사용
FROM eclipse-temurin:17-jdk
# 2. 작업 디렉토리 생성
WORKDIR /app
# 3. JAR 파일을 컨테이너 내부로 복사
COPY build/libs/ktor-chatbot.jar /app/ktor-chatbot.jar
# 4. 컨테이너 실행 시 JAR 파일 실행
CMD ["java", "-jar", "/app/ktor-chatbot.jar"]
# 5. Ktor 서버의 기본 포트 8080을 컨테이너에서 노출
EXPOSE 8080
4) Docker 빌드 및 실행
✅ ① JAR 파일 빌드 (ktor-chatbot.jar 생성)
./gradlew build
✅ ② Docker 이미지 빌드
docker build -t ktor-chatbot .
📌 예상 결과:
Successfully built abc12345
Successfully tagged ktor-chatbot:latest
✅ ③ Docker 컨테이너 실행
docker run -p 8080:8080 --name chatbot-container ktor-chatbot
✅ ④ 실행 확인
curl -X GET "http://localhost:8080/api/chat/sessions/test"
📌 예상 결과:
[]
5) Docker Compose 설정 (PostgreSQL 포함 컨테이너 실행)
Ktor 서버와 PostgreSQL을 함께 실행하기 위해 docker-compose.yml을 설정합니다.
✅ ① docker-compose.yml 파일 생성
version: '3.8'
services:
ktor-chatbot:
build: .
ports:
- "8080:8080"
depends_on:
- postgres
environment:
DATABASE_URL: "jdbc:postgresql://postgres:5432/chatbot_db"
DATABASE_USER: "postgres"
DATABASE_PASSWORD: "password"
postgres:
image: postgres:15
restart: always
environment:
POSTGRES_DB: chatbot_db
POSTGRES_USER: postgres
POSTGRES_PASSWORD: password
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data
volumes:
postgres_data:
6) 컨테이너 실행 및 테스트
✅ ① Docker Compose 실행
docker-compose up -d
✅ ② 실행된 컨테이너 확인
docker ps
📌 예상 결과:
CONTAINER ID IMAGE PORTS NAMES
abc12345 ktor-chatbot 0.0.0.0:8080->8080/tcp chatbot-container
xyz67890 postgres 0.0.0.0:5432->5432/tcp chatbot-db
7) 컨테이너 최적화 및 유지보수
✅ ① 컨테이너 자동 재시작 설정
restart: always
✅ ② 로그 확인 및 디버깅
docker logs chatbot-container
✅ ③ 컨테이너 중지 및 삭제
docker-compose down
8) Docker 기반 배포 요약
단계 실행 명령어
JAR 파일 빌드 | ./gradlew build |
Docker 이미지 빌드 | docker build -t ktor-chatbot . |
Docker 컨테이너 실행 | docker run -p 8080:8080 ktor-chatbot |
PostgreSQL 포함 실행 | docker-compose up -d |
실행된 컨테이너 확인 | docker ps |
9) 다음 단계
이제 Ktor 백엔드를 Docker 컨테이너화하고, PostgreSQL과 함께 실행할 수 있도록 설정했습니다.
다음으로 6.2 프론트엔드 배포 (Vercel) 을 진행하여
SvelteKit 기반 프론트엔드를 Vercel을 이용해 배포하겠습니다! 🚀
반응형
'project > 로컬 LLM + RAG 기반 AI 채팅봇 만들기' 카테고리의 다른 글
로컬 LLM + RAG 기반 AI 채팅봇 만들기 # 41 - 배포 후 점검 사항 (0) | 2025.03.01 |
---|---|
로컬 LLM + RAG 기반 AI 채팅봇 만들기 # 40 - 프론트엔드 배포 (Vercel) (0) | 2025.03.01 |
로컬 LLM + RAG 기반 AI 채팅봇 만들기 # 37 - WebSocket 테스트 (웹 브라우저 콘솔 활용) (0) | 2025.03.01 |
로컬 LLM + RAG 기반 AI 채팅봇 만들기 # 36 - API 테스트 (Postman 사용) (0) | 2025.03.01 |
로컬 LLM + RAG 기반 AI 채팅봇 만들기 # 35 - 챗봇 API 설계 (0) | 2025.03.01 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 개발블로그
- nodejs
- rag
- 백엔드개발
- Docker
- llm
- 백엔드
- 프론트엔드
- til
- 로컬LLM
- github
- kotlin
- LangChain
- Page
- Project
- fastapi
- AI챗봇
- 챗봇개발
- nextJS
- Next.js
- 리액트
- 페이지
- Ktor
- Python
- 웹개발
- 관리자
- REACT
- PostgreSQL
- Webpack
- babel
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
글 보관함
반응형