services: gitnexus-server: image: ${SERVER_IMAGE:-ghcr.io/abhigyanpatwari/gitnexus:latest} container_name: ${SERVER_CONTAINER_NAME:-gitnexus-server} # Map the server to the same host port the web UI expects by default # (http://localhost:4747). The browser runs on the host, so the UI's # built-in default works without any reconfiguration. ports: - '${SERVER_HOST_PORT:-4747}:4747' volumes: # Persist the global registry, indexes, and cloned repos across runs. - gitnexus-data:/data/gitnexus # Optional: mount a host workspace so `gitnexus index ` can see # repos you already have on disk. The default points at an empty # `./workspace/` sibling that compose will create on first start — # it intentionally does NOT bind-mount the repo root, which would # expose `.git`, `.env`, and CI secrets to the container. # Override with `WORKSPACE_DIR=/abs/path/to/your/repos`. - ${WORKSPACE_DIR:-./workspace}:/workspace:ro restart: unless-stopped healthcheck: test: ['CMD', 'curl', '-f', 'http://localhost:4747/api/health'] interval: 30s timeout: 5s retries: 3 start_period: 15s gitnexus-web: image: ${WEB_IMAGE:-ghcr.io/abhigyanpatwari/gitnexus-web:latest} container_name: ${WEB_CONTAINER_NAME:-gitnexus-web} ports: - '${WEB_HOST_PORT:-4173}:4173' # Override the backend URL served to the browser. The default # (http://localhost:4747) works when both containers run locally. # Set GITNEXUS_BACKEND_URL in your .env or shell for remote/custom setups: # GITNEXUS_BACKEND_URL=http://:4747 environment: - GITNEXUS_BACKEND_URL=${GITNEXUS_BACKEND_URL:-} depends_on: gitnexus-server: condition: service_healthy restart: unless-stopped healthcheck: test: ['CMD', 'curl', '-f', 'http://localhost:4173/'] interval: 30s timeout: 5s retries: 3 start_period: 10s volumes: gitnexus-data: