我想在本地试用 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;
不知道是什么原因,有老手能指导吗?