name: assetmanager services: db: image: postgres:16-alpine container_name: assetmanager-db restart: unless-stopped environment: POSTGRES_DB: ${POSTGRES_DB:-assetmanager} POSTGRES_USER: ${POSTGRES_USER:-assetmanager} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-change-me} volumes: - ./data/postgres:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-assetmanager} -d ${POSTGRES_DB:-assetmanager}"] interval: 5s timeout: 5s retries: 10 app: build: . container_name: assetmanager-app restart: unless-stopped depends_on: db: condition: service_healthy environment: DATABASE_URL: postgresql+psycopg://${POSTGRES_USER:-assetmanager}:${POSTGRES_PASSWORD:-change-me}@db:5432/${POSTGRES_DB:-assetmanager} APP_TITLE: AssetManager APP_CONFIG: /app/config/config.json APPINFO_PATH: /app/config/APPINFO.json BACKUP_DIR: /data/backups BACKUP_INTERVAL_HOURS: ${BACKUP_INTERVAL_HOURS:-8} BACKUP_RETENTION_DAYS: ${BACKUP_RETENTION_DAYS:-3} MESHCENTRAL_PASSWORD: ${MESHCENTRAL_PASSWORD:-} SYNC_LOG_DIR: /app/data/logs/sync DIAGNOSTIC_DIR: /app/data/logs/diagnostics LDAP_BIND_PASSWORD: ${LDAP_BIND_PASSWORD:-} SESSION_SECRET: ${SESSION_SECRET:-} LOCAL_ADMIN_USERNAME: ${LOCAL_ADMIN_USERNAME:-} LOCAL_ADMIN_PASSWORD: ${LOCAL_ADMIN_PASSWORD:-} ports: - "${APP_PORT:-8088}:8000" volumes: - ./data/config:/app/config - ./data/uploads:/app/app/static/uploads - ./data/logs:/app/data/logs - ./data/backups:/data/backups - ./data/scripts:/scripts