version: '3.8' services: notebook-viewer: build: . ports: - "${FLASK_PORT:-5000}:5000" volumes: - "${JUPYTERHUB_SHARED_DIR:-./shared}:/shared:ro" - "./notebooks:/notebooks:ro" # Additional notebooks directory environment: - JUPYTERHUB_SHARED_DIR=/shared - FLASK_HOST=0.0.0.0 - FLASK_PORT=5000 - FLASK_DEBUG=${FLASK_DEBUG:-False} - FLASK_SECRET_KEY=${FLASK_SECRET_KEY:-change-me-in-production} - MAX_FILE_SIZE=${MAX_FILE_SIZE:-16777216} - NOTEBOOKS_PER_PAGE=${NOTEBOOKS_PER_PAGE:-50} - ALLOWED_EXTENSIONS=${ALLOWED_EXTENSIONS:-.ipynb,.py,.md} - ENABLE_DOWNLOAD=${ENABLE_DOWNLOAD:-True} - ENABLE_API=${ENABLE_API:-True} - APP_TITLE=${APP_TITLE:-JupyterHub Notebook Viewer} - THEME=${THEME:-dark} env_file: - .env restart: unless-stopped healthcheck: test: ["CMD", "curl", "-f", "http://localhost:5000/"] interval: 30s timeout: 10s retries: 3 start_period: 40s volumes: shared: driver: local