services: api: build: context: ./backend container_name: fastnotes-api environment: - DATABASE_URL=${DATABASE_URL:-sqlite:////app/data/notes.db} - SECRET_KEY=${SECRET_KEY:-change-this-in-production} - CORS_ORIGINS=${CORS_ORIGINS:-*} # Internal only - accessed via nginx proxy expose: - "8000" volumes: - api_data:/app/data restart: unless-stopped healthcheck: test: [ "CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8000/health').read()", ] interval: 10s timeout: 5s start_period: 40s retries: 3 ui: build: context: ./frontend args: # Frontend will use /api path (proxied by nginx) VITE_API_URL: ${VITE_API_URL:-/api} container_name: fastnotes-ui # Coolify manages ports via its proxy - expose instead of publish expose: - "80" depends_on: - api restart: unless-stopped volumes: api_data: