# ============================================
# Paperlib MCP - Remote Server Compose
# ============================================
# 在远程服务器上运行基础架构(PostgreSQL + MinIO)
# paperlib_mcp 应用可以从本地或其他容器连接这些服务
services:
# ==========================================
# PostgreSQL with pgvector
# ==========================================
postgres:
image: pgvector/pgvector:pg16
container_name: paperlib-postgres
environment:
POSTGRES_USER: ${POSTGRES_USER:-paper}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-paper}
POSTGRES_DB: ${POSTGRES_DB:-paperlib}
volumes:
- postgres_data:/var/lib/postgresql/data
- ./initdb:/docker-entrypoint-initdb.d:ro
ports:
- "${POSTGRES_PORT:-5432}:5432"
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-paper} -d ${POSTGRES_DB:-paperlib}"]
interval: 10s
timeout: 5s
retries: 5
restart: unless-stopped
networks:
- paperlib-network
# ==========================================
# MinIO Object Storage (S3 Compatible)
# ==========================================
minio:
image: minio/minio:latest
container_name: paperlib-minio
environment:
MINIO_ROOT_USER: ${MINIO_ROOT_USER:-minio}
MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD:-minio123}
command: server /data --console-address ":9001"
volumes:
- minio_data:/data
ports:
- "${MINIO_API_PORT:-9000}:9000" # S3 API
- "${MINIO_CONSOLE_PORT:-9001}:9001" # Web Console
healthcheck:
test: ["CMD", "mc", "ready", "local"]
interval: 10s
timeout: 5s
retries: 5
restart: unless-stopped
networks:
- paperlib-network
# ==========================================
# MinIO Bucket Initialization
# ==========================================
minio-init:
image: minio/mc:latest
container_name: paperlib-minio-init
depends_on:
minio:
condition: service_healthy
entrypoint: >
/bin/sh -c "
mc alias set local http://minio:9000 ${MINIO_ROOT_USER:-minio} ${MINIO_ROOT_PASSWORD:-minio123};
mc mb local/${MINIO_BUCKET:-papers} --ignore-existing;
exit 0;
"
networks:
- paperlib-network
volumes:
postgres_data:
driver: local
minio_data:
driver: local
networks:
paperlib-network:
driver: bridge