Discourse를 로컬에서 사용해 보기 위해 Docker Compose를 사용하여 설정을 시도했습니다:
version: '3.8'
services:
postgres:
image: pgvector/pgvector:pg17
container_name: discourse-postgres
restart: always
environment:
POSTGRES_USER: discourse
POSTGRES_PASSWORD: discourse
POSTGRES_DB: discourse
# 확장이 정상적으로 로드되도록 보장
# POSTGRES_INITDB_ARGS: "--enable-extensions=vector"
volumes:
- ./data/postgres:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U discourse && psql -U discourse -c 'SELECT * FROM pg_extension WHERE extname = ''vector'';'"]
interval: 10s
timeout: 5s
retries: 5
redis:
image: redis:7-alpine
container_name: discourse-redis
restart: always
volumes:
- ./data/redis:/data
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 5s
retries: 5
discourse:
image: discourse/discourse:stable
container_name: discourse-app
restart: always
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_healthy
ports:
- "80:80"
environment:
DISCOURSE_DB_HOST: postgres
DISCOURSE_DB_USER: discourse
DISCOURSE_DB_PASSWORD: discourse
DISCOURSE_REDIS_HOST: redis
DISCOURSE_DEVELOPER_EMAILS: "admin@example.com"
DISCOURSE_HOSTNAME: "localhost"
# 임시 SMTP 설정 (시작 후 실제 값으로 수정 필요)
DISCOURSE_SMTP_ADDRESS: "smtp.example.com"
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: "admin@example.com"
DISCOURSE_SMTP_PASSWORD: "password"
# 선택 사항: 불필요한 AI 기능을 비활성화하여 확장 의존성 감소 (필요시)
DISCOURSE_DISABLE_VECTOR_SEARCH: "true"
volumes:
- ./data/discourse:/var/www/discourse/shared
하지만 Discourse 포럼을 체험하는 것을 방해하는 문제에 직면했습니다:
discourse-postgres | 2026-01-20 09:19:47.774 UTC [140] ERROR: column "vector" does not exist at character 44
discourse-postgres | 2026-01-20 09:19:47.774 UTC [140] STATEMENT: SELECT * FROM pg_extension WHERE extname = vector;
원인을 알 수 없습니다. 경험 많은 분의 조언을 구합니다.