services: judge4c: build: context: . dockerfile: Dockerfile image: judge4c:latest container_name: judge4c restart: always ports: - "3000:3000" networks: - judge4c depends_on: postgres: condition: service_healthy lsp-c: condition: service_healthy lsp-cpp: condition: service_healthy healthcheck: test: [ "CMD-SHELL", "curl --fail http://localhost:3000 || exit 1" ] interval: 10s timeout: 5s retries: 5 start_period: 10s volumes: - /var/run/docker.sock:/var/run/docker.sock lsp-c: build: context: ./docker/lsp/clangd dockerfile: Dockerfile image: lsp-c:latest container_name: lsp-c restart: always ports: - "4594:3000" networks: - judge4c healthcheck: test: [ "CMD-SHELL", "nc -zv localhost 3000" ] interval: 10s timeout: 5s retries: 5 lsp-cpp: build: context: ./docker/lsp/clangd dockerfile: Dockerfile image: lsp-cpp:latest container_name: lsp-cpp restart: always ports: - "4595:3000" networks: - judge4c healthcheck: test: [ "CMD-SHELL", "nc -zv localhost 3000" ] interval: 10s timeout: 5s retries: 5 postgres: image: postgres:16-alpine container_name: postgres restart: always environment: - POSTGRES_USER=${POSTGRES_USER} - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} - POSTGRES_DB=${POSTGRES_DB} ports: - "5432:5432" networks: - judge4c healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres -d postgres"] interval: 5s timeout: 2s retries: 20 networks: judge4c: name: judge4c