115 lines
3.0 KiB
YAML
Executable File
115 lines
3.0 KiB
YAML
Executable File
# 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
|