services: # ============================================ # PostgreSQL - Database # ============================================ postgres: image: postgres:16-alpine container_name: memento-postgres ports: - "${POSTGRES_PORT:-5432}:5432" environment: - POSTGRES_DB=${POSTGRES_DB:-memento} - POSTGRES_USER=${POSTGRES_USER:-memento} - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-memento} volumes: - postgres-data:/var/lib/postgresql/data restart: unless-stopped healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-memento}"] interval: 10s timeout: 5s retries: 5 start_period: 10s networks: - memento-network # ============================================ # memento-note - Next.js Web Application # ============================================ memento-note: build: context: . dockerfile: Dockerfile image: memento-note:latest container_name: memento-note restart: unless-stopped ports: - "3000:3000" environment: # Database - DATABASE_URL=postgresql://${POSTGRES_USER:-memento}:${POSTGRES_PASSWORD:-memento}@postgres:5432/${POSTGRES_DB:-memento} - NODE_ENV=production # Application (IMPORTANT: Change these!) - NEXTAUTH_URL=${NEXTAUTH_URL:-http://localhost:3000} - NEXTAUTH_SECRET=${NEXTAUTH_SECRET:-change-this-to-a-random-secret-string} # Disable Next.js telemetry - NEXT_TELEMETRY_DISABLED=1 # AI Provider (Optional - for OpenAI) # - OPENAI_API_KEY=your-openai-api-key-here # AI Provider (Optional - for Ollama) # - OLLAMA_BASE_URL=http://ollama:11434 # - OLLAMA_MODEL=granite4:latest volumes: # Persist uploaded images and files - uploads-data:/app/public/uploads depends_on: postgres: condition: service_healthy networks: - memento-network # Optional: Resource limits for Proxmox VM deploy: resources: limits: cpus: '2' memory: 2G reservations: cpus: '0.5' memory: 512M # Health check for automatic restart healthcheck: test: ["CMD", "wget", "--spider", "-q", "http://localhost:3000"] interval: 30s timeout: 10s retries: 3 start_period: 40s # Optional: Ollama for local AI models # Uncomment this section if you want to use local AI models # ollama: # image: ollama/ollama:latest # container_name: memento-ollama # restart: unless-stopped # ports: # - "11434:11434" # volumes: # - ollama-data:/root/.ollama # networks: # - memento-network # deploy: # resources: # limits: # cpus: '4' # memory: 8G # reservations: # cpus: '2' # memory: 4G networks: memento-network: driver: bridge volumes: postgres-data: driver: local uploads-data: driver: local # ollama-data: # driver: local