85 lines
3.0 KiB
YAML
85 lines
3.0 KiB
YAML
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:-}
|
|
CALLBACK_PORT: ${CALLBACK_PORT:-8090}
|
|
CALLBACK_BIND_IP: ${CALLBACK_BIND_IP:-127.0.0.1}
|
|
|
|
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
|
|
|
|
# Callback-only listener for Internet/DMZ scenarios.
|
|
# Starts together with AssetManager and exposes only the callback POST endpoint
|
|
# and callback health endpoint, never the AssetManager web interface.
|
|
callback:
|
|
build: .
|
|
container_name: assetmanager-callback
|
|
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
|
|
MESHCENTRAL_PASSWORD: ${MESHCENTRAL_PASSWORD:-}
|
|
LDAP_BIND_PASSWORD: ${LDAP_BIND_PASSWORD:-}
|
|
SESSION_SECRET: ${SESSION_SECRET:-}
|
|
command: ["uvicorn", "app.main:callback_app", "--host", "0.0.0.0", "--port", "8001"]
|
|
ports:
|
|
- "${CALLBACK_BIND_IP:-127.0.0.1}:${CALLBACK_PORT:-8090}:8001"
|
|
volumes:
|
|
- ./data/config:/app/config
|
|
- ./data/logs:/app/data/logs
|
|
healthcheck:
|
|
test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://127.0.0.1:8001/api/software-callback/health', timeout=3).read()"]
|
|
interval: 30s
|
|
timeout: 5s
|
|
start_period: 10s
|
|
retries: 3
|
|
|