# sudo certbot certonly --standalone --http-01-port 8080 # cerbot needs to run on 8080 since port 80 is used by the gateway services: # Gateway (Single Entry Point) gateway: image: nginx:1.27.1-alpine container_name: checkmate-gateway restart: always ports: - "80:80" - "443:443" volumes: - /etc/letsencrypt:/etc/nginx/ssl:ro - ./gateway/nginx.conf:/etc/nginx/conf.d/default.conf:ro # Production Stack ----- client-prod: image: ghcr.io/bluewave-labs/checkmate:frontend-demo container_name: client-prod restart: always environment: UPTIME_APP_API_BASE_URL: "https://demo.checkmate.so/api/v1" UPTIME_APP_CLIENT_HOST: "https://demo.checkmate.so" expose: - "80" depends_on: - server-prod volumes: - ./nginx/conf.d/prod.conf:/etc/nginx/conf.d/default.conf:ro server-prod: image: ghcr.io/bluewave-labs/checkmate:backend-demo container_name: server-prod restart: always env_file: - server-prod.env depends_on: - mongodb-prod volumes: - /var/run/docker.sock:/var/run/docker.sock:ro mongodb-prod: image: ghcr.io/bluewave-labs/checkmate:mongo-demo container_name: mongodb-prod restart: always command: [ "mongod", "--quiet", "--bind_ip_all" ] volumes: - ./mongo/data-prod:/data/db env_file: - mongo-prod.env healthcheck: test: [ "CMD", "mongosh", "--eval", "db.adminCommand('ping')", "--quiet" ] interval: 5s timeout: 30s start_period: 0s start_interval: 1s retries: 30 # Staging Stack ----- client-staging: image: ghcr.io/bluewave-labs/checkmate:frontend-staging container_name: client-staging restart: always environment: UPTIME_APP_API_BASE_URL: "https://staging.checkmate.so/api/v1" UPTIME_APP_CLIENT_HOST: "https://staging.checkmate.so" expose: - "80" depends_on: - server-staging volumes: - ./nginx/conf.d/staging.conf:/etc/nginx/conf.d/default.conf:ro server-staging: image: ghcr.io/bluewave-labs/checkmate:backend-staging container_name: server-staging restart: always env_file: - server-staging.env depends_on: - mongodb-staging volumes: - /var/run/docker.sock:/var/run/docker.sock:ro mongodb-staging: image: ghcr.io/bluewave-labs/checkmate:mongo-staging container_name: mongodb-staging restart: always command: [ "mongod", "--quiet", "--bind_ip_all" ] volumes: - ./mongo/data-staging:/data/db env_file: - mongo-staging.env healthcheck: test: [ "CMD", "mongosh", "--eval", "db.adminCommand('ping')", "--quiet" ] interval: 5s timeout: 30s start_period: 0s start_interval: 1s retries: 30 # Shared Utils capture: image: ghcr.io/bluewave-labs/capture:latest container_name: capture restart: unless-stopped ports: - "59232:59232" environment: - API_SECRET=my_secret - GIN_MODE=release volumes: - /etc/os-release:/etc/os-release:ro