ppt-web / docker-compose.yml
26fwyzpz6f-max
Clean deploy without binary files
6aecb2e
Raw
History Blame Contribute Delete
3.72 kB
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: bradleylzh/landppt:latest
container_name: landppt
# Chromium requires more shared memory than Docker's default 64MB
shm_size: '4gb'
ports:
- "8000:8000"
volumes:
# Configuration
- ./.env:/app/.env
# Development: mount local src for debugging without rebuild
# - ./src:/app/src
# Data persistence
- landppt_data:/app/data
- landppt_uploads:/app/uploads
- landppt_reports:/app/research_reports
- landppt_cache:/app/temp
# Persist Apryse SDK to avoid re-downloading on each restart
- landppt_lib:/app/lib
environment:
- PYTHONPATH=/opt/venv/lib/python3.11/site-packages:/app/src
- PYTHONUNBUFFERED=1
# Uvicorn settings (read from .env via compose interpolation)
- WORKERS=${WORKERS:-2}
- RELOAD=${RELOAD:-false}
- HOST=${HOST:-0.0.0.0}
- PORT=${PORT:-8000}
- LOG_LEVEL=${LOG_LEVEL:-info}
# Security - read from .env
- SECRET_KEY=${SECRET_KEY:-your-secret-key-change-me}
# n8n / automation API auth
- 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:-false}
- LANDPPT_BOOTSTRAP_ADMIN_USERNAME=${LANDPPT_BOOTSTRAP_ADMIN_USERNAME:-}
- LANDPPT_BOOTSTRAP_ADMIN_PASSWORD=${LANDPPT_BOOTSTRAP_ADMIN_PASSWORD:-}
- LANDPPT_ENABLE_API_DOCS=${LANDPPT_ENABLE_API_DOCS:-true}
- LANDPPT_ALLOW_HEADER_SESSION_AUTH=${LANDPPT_ALLOW_HEADER_SESSION_AUTH:-false}
# PostgreSQL connection - read from .env
- DATABASE_URL=postgresql://${POSTGRES_USER:-landppt}:${POSTGRES_PASSWORD:-landppt}@postgres:5432/${POSTGRES_DB:-landppt}
# Valkey cache - read from .env
- CACHE_BACKEND=valkey
- VALKEY_URL=valkey://valkey:${VALKEY_PORT:-6379}
depends_on:
postgres:
condition: service_healthy
valkey:
condition: service_started
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
environment:
POSTGRES_DB: ${POSTGRES_DB:-landppt}
POSTGRES_USER: ${POSTGRES_USER:-landppt}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-landppt}
ports:
- "6004:5432"
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
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
networks:
landppt_network:
driver: bridge