version: '3.8' services: bookapp: build: . container_name: bookapp restart: unless-stopped ports: - "5000:5000" working_dir: /app volumes: # --- PERSISTENCE (Data & Login) --- # These mounts ensure your projects and login tokens survive container resets # HOST_PATH is defined in Portainer Environment Variables (e.g. /opt/bookapp) - ${HOST_PATH:-.}/data:/app/data - ${HOST_PATH:-.}/token.json:/app/token.json - ${HOST_PATH:-.}/credentials.json:/app/credentials.json # --- DEVELOPMENT (Code Sync) --- # UNCOMMENT these lines only if you are developing and want to see changes instantly. # For production/deployment, keep them commented out so the container uses the built image code. # - ./modules:/app/modules # - ./templates:/app/templates # - ./main.py:/app/main.py # - ./wizard.py:/app/wizard.py # - ./config.py:/app/config.py environment: - PYTHONUNBUFFERED=1 - GOOGLE_APPLICATION_CREDENTIALS=/app/credentials.json - PYTHONPATH=/app - FLASK_SECRET_KEY=change_this_to_a_random_string - ADMIN_USERNAME=admin - ADMIN_PASSWORD=change_me_in_portainer - GEMINI_API_KEY=${GEMINI_API_KEY}