Files
LandPPT/docker-compose-dev.yaml
T
2026-07-06 22:29:54 +08:00

166 lines
5.0 KiB
YAML

services:
landppt:
build:
context: .
dockerfile: Dockerfile
args:
- APT_DEBIAN_URL=${APT_DEBIAN_URL:-http://deb.debian.org/debian}
- APT_SECURITY_URL=${APT_SECURITY_URL:-http://deb.debian.org/debian-security}
image: landppt-dev:latest
container_name: landppt-dev
shm_size: '2gb'
ports:
- "8000:8000"
volumes:
- ./:/app
- landppt_data:/app/data
- landppt_uploads:/app/uploads
- landppt_reports:/app/research_reports
- landppt_cache:/app/temp
- landppt_lib:/app/lib
environment:
- PYTHONPATH=/opt/venv/lib/python3.11/site-packages:/app/src
- PYTHONUNBUFFERED=1
- WORKERS=${WORKERS:-1}
- RELOAD=${RELOAD:-true}
- HOST=${HOST:-0.0.0.0}
- PORT=${PORT:-8000}
- LOG_LEVEL=${LOG_LEVEL:-info}
- OPENAI_USE_RESPONSES_API=${OPENAI_USE_RESPONSES_API:-false}
- OPENAI_ENABLE_REASONING=${OPENAI_ENABLE_REASONING:-false}
- OPENAI_REASONING_EFFORT=${OPENAI_REASONING_EFFORT:-medium}
- SECRET_KEY=${SECRET_KEY:-your-secret-key-change-me}
- LANDPPT_API_KEY=${LANDPPT_API_KEY:-}
- LANDPPT_API_KEY_USER=${LANDPPT_API_KEY_USER:-admin}
- LANDPPT_API_KEYS=${LANDPPT_API_KEYS:-}
- LANDPPT_BOOTSTRAP_ADMIN_ENABLED=${LANDPPT_BOOTSTRAP_ADMIN_ENABLED:-true}
- LANDPPT_BOOTSTRAP_ADMIN_USERNAME=${LANDPPT_BOOTSTRAP_ADMIN_USERNAME:-admin}
- LANDPPT_BOOTSTRAP_ADMIN_PASSWORD=${LANDPPT_BOOTSTRAP_ADMIN_PASSWORD:-admin123}
- LANDPPT_ENABLE_API_DOCS=${LANDPPT_ENABLE_API_DOCS:-true}
- LANDPPT_ALLOW_HEADER_SESSION_AUTH=${LANDPPT_ALLOW_HEADER_SESSION_AUTH:-false}
- INVITE_CODE_REQUIRED_FOR_REGISTRATION=${INVITE_CODE_REQUIRED_FOR_REGISTRATION:-false}
- DATABASE_URL=postgresql://${POSTGRES_USER:-landppt}:${POSTGRES_PASSWORD:-landppt}@postgres:5432/${POSTGRES_DB:-landppt}
- CACHE_BACKEND=valkey
- VALKEY_URL=valkey://valkey:${VALKEY_PORT:-6379}
- STORAGE_BACKEND=${STORAGE_BACKEND:-s3}
- S3_ENDPOINT_URL=${S3_ENDPOINT_URL:-http://minio:9000}
- S3_REGION=${S3_REGION:-us-east-1}
- S3_BUCKET=${S3_BUCKET:-landppt}
- S3_ACCESS_KEY_ID=${S3_ACCESS_KEY_ID:-landppt}
- S3_SECRET_ACCESS_KEY=${S3_SECRET_ACCESS_KEY:-landppt-minio-secret}
- S3_FORCE_PATH_STYLE=${S3_FORCE_PATH_STYLE:-true}
- S3_PRESIGNED_URL_EXPIRES_SECONDS=${S3_PRESIGNED_URL_EXPIRES_SECONDS:-3600}
depends_on:
postgres:
condition: service_healthy
valkey:
condition: service_started
minio:
condition: service_healthy
minio-init:
condition: service_completed_successfully
restart: unless-stopped
healthcheck:
test: ["CMD", "/usr/local/bin/docker-healthcheck.sh"]
interval: 30s
timeout: 30s
retries: 3
start_period: 40s
networks:
- landppt_network
postgres:
image: postgres:16-alpine
container_name: landppt-postgres
ports:
- "5432:5432"
environment:
POSTGRES_DB: ${POSTGRES_DB:-landppt}
POSTGRES_USER: ${POSTGRES_USER:-landppt}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-landppt}
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-landppt} -d ${POSTGRES_DB:-landppt}"]
interval: 10s
timeout: 5s
retries: 5
networks:
- landppt_network
restart: unless-stopped
valkey:
image: valkey/valkey:8-alpine
container_name: landppt-valkey
command: valkey-server --appendonly yes
volumes:
- valkey_data:/data
healthcheck:
test: ["CMD", "valkey-cli", "ping"]
interval: 10s
timeout: 5s
retries: 5
networks:
- landppt_network
restart: unless-stopped
minio:
image: minio/minio:RELEASE.2025-04-22T22-12-26Z
container_name: landppt-minio-dev
command: server /data --console-address ":9001"
environment:
MINIO_ROOT_USER: ${MINIO_ROOT_USER:-landppt}
MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD:-landppt-minio-secret}
ports:
- "9000:9000"
- "9001:9001"
volumes:
- minio_data:/data
healthcheck:
test: ["CMD", "mc", "ready", "local"]
interval: 10s
timeout: 5s
retries: 5
networks:
- landppt_network
restart: unless-stopped
minio-init:
image: minio/mc:RELEASE.2025-04-16T18-13-26Z
container_name: landppt-minio-init-dev
depends_on:
minio:
condition: service_healthy
entrypoint: >
/bin/sh -c "
mc alias set local http://minio:9000 ${MINIO_ROOT_USER:-landppt} ${MINIO_ROOT_PASSWORD:-landppt-minio-secret};
mc mb -p local/${S3_BUCKET:-landppt};
exit 0;
"
networks:
- landppt_network
volumes:
landppt_data:
driver: local
landppt_uploads:
driver: local
landppt_reports:
driver: local
landppt_cache:
driver: local
landppt_lib:
driver: local
postgres_data:
driver: local
valkey_data:
driver: local
minio_data:
driver: local
networks:
landppt_network:
driver: bridge