services: postgres: image: postgres:17-alpine environment: POSTGRES_DB: ${POSTGRES_DB:-time_track} POSTGRES_USER: ${POSTGRES_USER:-time_track} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?Set POSTGRES_PASSWORD in .env} volumes: - postgres_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"] interval: 10s timeout: 5s retries: 5 restart: unless-stopped app: build: . environment: DATABASE_URL: postgresql+psycopg://${POSTGRES_USER:-time_track}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB:-time_track} ADMIN_PASSWORD: ${ADMIN_PASSWORD:?Set ADMIN_PASSWORD in .env} SYNC_API_TOKEN: ${SYNC_API_TOKEN:?Set SYNC_API_TOKEN in .env} SESSION_SECRET: ${SESSION_SECRET:?Set SESSION_SECRET in .env} APP_TIMEZONE: ${APP_TIMEZONE:-Europe/Vienna} OLLAMA_BASE_URL: ${OLLAMA_BASE_URL:-http://100.103.83.12:11345} OLLAMA_MODEL: ${OLLAMA_MODEL:-qwen3:8b} UPLOAD_DIR: /data/call-imports volumes: - call_imports:/data/call-imports ports: - "${BIND_IP:-127.0.0.1}:3008:3000" depends_on: postgres: condition: service_healthy restart: unless-stopped volumes: postgres_data: call_imports: