본문 바로가기
카테고리 없음

Vector Admin(유니버설 벡터 데이터베이스 관리 도구)과 PostgreSQL 및 pgvector 연동

by 3604 2026. 8. 4.
728x90

Vector Admin(유니버설 벡터 데이터베이스 관리 도구) PostgreSQL pgvector 연동은 Docker 또는 소스 코드 직접 기동 통해 수행할 있으며, 공식 저장소인 Vector Admin GitHub 가이드를 따릅니다.

 

1. PostgreSQL pgvector 설치 연결 설정

  • PostgreSQL 설치
  • pgvector 확장 기능(Extension) 설치
  • 데이터베이스 생성 연결 활성화

sql

CREATE DATABASE vectoradmin;

\c vectoradmin

```

코드를 사용할 때는 주의가 필요합니다.


2. Vector Admin 소스 다운로드 기동 방법 (개발 환경)

  • 소스 코드 클론

bash

git clone https://github.com

cd vector-admin

코드를 사용할 때는 주의가 필요합니다.

[1]

  • 환경 설정 초기화

bash

yarn dev:setup

코드를 사용할 때는 주의가 필요합니다.

 

  • Python 문서 프로세서(Document Processor) 가상 환경 설정

bash

cd document-processor

python3.9 -m venv v-env

source v-env/bin/activate

pip install -r requirements.txt

flask --app main.py run --host 0.0.0.0 --port 8888

코드를 사용할 때는 주의가 필요합니다.

 

  • 서버 프론트엔드 기동

 

 

docker-compose.yml 작성 및 설정 방법

docker-compose.yml 사용하면 PostgreSQL(pgvector 포함) 데이터베이스와 Vector Admin 서비스를 컨테이너 하나로 묶어 동시에 안전하게 기동 있습니다

Vector Admin 공식 GitHub Docker 설정 기반으로 간소화한 통합 가이드입니다


1. 사전 준비 (작업 디렉토리 생성)

설정 파일들이 담길 폴더를 먼저 생성하고 이동합니다

bash

mkdir -p ~/vector-admin-docker/docker

cd ~/vector-admin-docker/docker

코드를 사용할 때는 주의가 필요합니다.


2. .env 환경 변수 파일 생성

Vector Admin 실행될 참조할 환경 변수 파일(.env) 작성합니다.

bash

cat <<EOF > .env

# Vector Admin Server Configuration

SERVER_PORT=3001

JWT_SECRET="your-super-secret-random-string-here"

 

# Background Worker Keys (Random string)

INNGEST_EVENT_KEY="background_workers"

INNGEST_SIGNING_KEY="another-random-secure-string"

 

# Postgres Connection String (docker-compose db 서비스명 사용)

DATABASE_CONNECTION_STRING="postgresql://vectoradmin:password@postgres:5432/vdbms"

EOF

코드를 사용할 때는 주의가 필요합니다.

  • 주의: JWT_SECRET INNGEST_SIGNING_KEY 값은 임의의 무작위 문자열로 변경하여 유출을 방지하세요

3. docker-compose.yml 파일 작성

동일한 디렉토리에 아래 내용으로 docker-compose.yml 파일을 작성합니다

[Docker]#20 도커 컴포즈(docker compose) - docker-compose.yml 파일 작성법

출처: https://cozy-dev-area.tistory.com/75https://blog.naver.com/classmethodkr

클래스메소드코리아 공식블로그AWS클라우드, AWS기술문서, AWS이용사례, 클래스메소드소식

http://www.iworks.kr광고

레드햇 공인 파트너 아이웍스RedHat, RHEL, OSS, 신규구축, 리뉴얼, 기술지원, 전국가능

 

Docker Compose는 여러 개의 Docker 컨테이너를 쉽게 정의하고 관리할 수 있는 도구입니다. 이를 위해 docker-compose.yml 파일을 사용하여 필요한 컨테이너를 정의하고 설정을 한 곳에 모아 관리합니다. 이 블로그 포스팅에서는 docker-compose.yml 파일의 구조와 주요 구성 요소를 설명하고, 예시를 통해 이를 실제로 어떻게 사용하는지 알아보겠습니다.


목차

1.     Docker Compose란?

2.     docker-compose.yml 파일 구조

3.     예제: 간단한 웹 애플리케이션 구성

4.     Docker Compose 명령어

5.     결론


1. Docker Compose?

이전에 알아보았듯이 Docker Compose는 여러 개의 Docker 컨테이너를 하나의 서비스처럼 정의하고 관리할 수 있도록 도와주는 도구입니다. 복잡한 애플리케이션은 종종 여러 서비스(예: 웹 서버, 데이터베이스, 캐시 서버 등)로 구성됩니다. 이때 Docker Compose를 사용하면 여러 컨테이너를 하나의 파일로 정의하고, 한 번의 명령으로 이들을 동시에 실행할 수 있습니다.


2. docker-compose.yml 파일 구조

docker-compose.yml 파일은 YAML 형식으로 작성되며, 기본적으로 version, services, volumes, networks 등의 주요 항목으로 구성됩니다. 각 항목의 구성에 대해 알아보겠습니다.

version

version 키는 Docker Compose 파일의 버전을 지정합니다. 현재 가장 많이 사용하는 버전은 3.x입니다. 버전 3은 Docker Swarm과의 호환성을 제공하며, 다양한 기능을 지원합니다. 하지만, 최근 Docker compose에서는 version을 사용하는 것을 권장하지 않습니다.

version: '3.8'

services

services는 애플리케이션의 각 컨테이너를 정의하는 가장 중요한 섹션입니다. 서비스 내부에 컨테이너를 정의함으로써 여러분의 서비스를 만들어 가는 것이기 때문입니다. 여기에는 각 컨테이너의 이미지, 명령, 환경 변수, 네트워크 설정 등을 포함할 수 있습니다.

예시:

 

services:

  web:

    image: nginx:latest

    ports:

      - "8080:80"

    volumes:

      - ./html:/usr/share/nginx/html

    networks:

      - my-network

 

  db:

    image: postgres:13

    environment:

      POSTGRES_USER: example

      POSTGRES_PASSWORD: example

      POSTGRES_DB: example_db

    volumes:

      - db-data:/var/lib/postgresql/data

    networks:

      - my-network

위 예시에서는 두 개의 서비스 web과 db가 정의되어 있습니다. web 서비스는 Nginx 서버를 실행하고, 로컬의 ./html 디렉토리를 Nginx 컨테이너의 /usr/share/nginx/html로 마운트합니다. db 서비스는 PostgreSQL 데이터베이스를 실행하며, 환경 변수를 통해 데이터베이스 설정을 지정합니다.
이전에 살펴본 docker run 명령어에서 필요한 옵션들이 있었죠? 옵션들을 yaml 지정하는 것과 비슷한 개념으로 이해하시면 훨씬 쉽게 접근하실 있습니다.

volumes

volumes는 데이터를 영구적으로 저장할 수 있는 Docker 볼륨을 정의합니다. 이를 통해 컨테이너가 삭제되더라도 데이터는 유지됩니다. Volume 역시 명령어로 공부한 것을 yaml로 작성하는 것 뿐입니다.

예시:

volumes:

  db-data:

위 예시에서는 db-data라는 이름의 볼륨이 정의되어 있습니다. 이 볼륨은 db 서비스에서 사용되며, PostgreSQL 데이터베이스 데이터를 영구적으로 저장합니다.

networks

networks는 Docker 네트워크를 정의합니다. 각 서비스는 이 네트워크를 통해 서로 통신할 수 있습니다. 기본적으로 모든 서비스는 동일한 네트워크에 연결되지만, 필요에 따라 여러 네트워크를 정의하고 각 서비스에 연결할 수 있습니다.

예시:

networks:

  my-network:

위 예시에서는 my-network라는 네트워크가 정의되어 있습니다. web과 db 서비스는 이 네트워크를 통해 서로 통신할 수 있습니다.


3. 예제: 간단한 애플리케이션 구성

아래는 간단한 Node.js 애플리케이션과 MongoDB 데이터베이스를 함께 실행하는 docker-compose.yml 파일의 예입니다.

version: '3.8'

 

services:

  app:

    image: node:14

    working_dir: /app

    volumes:

      - .:/app

    command: npm start

    ports:

      - "3000:3000"

    depends_on:

      - mongo

    networks:

      - app-network

 

  mongo:

    image: mongo:4.2

    volumes:

      - mongo-data:/data/db

    networks:

      - app-network

 

volumes:

  mongo-data:

 

networks:

  app-network:

이 예제에서는 Node.js 애플리케이션(app)과 MongoDB 데이터베이스(mongo)가 정의되어 있습니다. app 서비스는 로컬 코드를 컨테이너 내 /app 디렉토리에 마운트하고, npm start 명령을 실행하여 애플리케이션을 시작합니다. mongo 서비스는 MongoDB 컨테이너를 실행하고, mongo-data라는 볼륨에 데이터를 저장합니다.


4. Docker Compose 명령어

Docker Compose 파일을 작성한 후에는 다음과 같은 명령어를 사용하여 애플리케이션을 관리할 수 있습니다:

·        docker-compose up: 정의된 모든 서비스를 빌드하고 시작합니다.

·        docker-compose down: 실행 중인 모든 서비스를 중지하고 네트워크를 제거합니다.

·        docker-compose ps: 현재 실행 중인 서비스를 확인합니다.

·        docker-compose logs: 모든 서비스의 로그를 출력합니다.

실제로 docker compose up 명령어를 수행한 그림입니다. 해당 그림에서 보듯이 우리가 정의한 2개의 서비스가 정의한대로 일괄적으로 수행되는 것을 볼 수 있습니다. app 컨테이너에 오류가 발생할 수 있는데 이는 우리가 app을 개발한 것이 없기 때문에 발생하는 에러로 지금은 신경쓰지 않으셔도 됩니다.


결론

Docker Compose와 docker-compose.yml 파일을 사용하면 복잡한 애플리케이션을 쉽게 정의하고 관리할 수 있습니다. docker run 명령어 등을 통해 컨테이너를 관리하고자 하면 각각의 컨테이너에 대해 직접 관리하여 관리의 복잡성이 증가합니다. 하지만, docker compose를 통해 여러 컨테이너로 구성된 애플리케이션을 하나의 파일로 정리하면, 명령어 몇 줄만으로 쉽게 개발 환경이나 운영 환경을 구축할 수 있습니다. 이를 통해 개발 및 배포 과정에서의 복잡성을 줄이고, 일관된 환경을 유지할 수 있습니다.

 

728x90