mirror of
https://github.com/nolen777/eagle0.git
synced 2026-07-28 21:35:42 +00:00
* Next steps for productionization * Run deploy job on self-hosted runner for secure SSH * Temporarily disable production environment to debug runner * Use ubuntu-latest for deploy job * Add remote_tags to oci_push for latest tag
88 lines
2.3 KiB
YAML
88 lines
2.3 KiB
YAML
# Docker Compose for production deployment
|
|
#
|
|
# Local testing:
|
|
# Build images: bazel run //ci:eagle_server_load && bazel run //ci:shardok_server_load
|
|
# Run: docker compose -f docker-compose.prod.yml up
|
|
#
|
|
# Production deployment:
|
|
# Run: docker compose -f docker-compose.prod.yml up -d
|
|
|
|
services:
|
|
eagle:
|
|
image: ${EAGLE_IMAGE:-registry.digitalocean.com/eagle0/eagle-server:latest}
|
|
container_name: eagle-server
|
|
ports:
|
|
- "40032:40032"
|
|
environment:
|
|
EAGLE_GRPC_PORT: "40032"
|
|
SHARDOK_HOST: "shardok"
|
|
SHARDOK_PORT: "40042"
|
|
EAGLE_RESOURCES_PATH: "/app/resources"
|
|
OPENAI_API_KEY: "${OPENAI_API_KEY:-}"
|
|
GPT_MODEL_NAME: "${GPT_MODEL_NAME:-gpt-4o}"
|
|
volumes:
|
|
- ./saves:/app/saves
|
|
depends_on:
|
|
- shardok
|
|
restart: unless-stopped
|
|
logging:
|
|
driver: "json-file"
|
|
options:
|
|
max-size: "100m"
|
|
max-file: "5"
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "nc -z localhost 40032 || exit 1"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 30s
|
|
|
|
shardok:
|
|
image: ${SHARDOK_IMAGE:-registry.digitalocean.com/eagle0/shardok-server:latest}
|
|
container_name: shardok-server
|
|
ports:
|
|
- "40042:40042"
|
|
- "40052:40052"
|
|
environment:
|
|
SHARDOK_RESOURCES_PATH: "/app/resources"
|
|
SHARDOK_MAPS_PATH: "/app/resources/maps"
|
|
restart: unless-stopped
|
|
logging:
|
|
driver: "json-file"
|
|
options:
|
|
max-size: "100m"
|
|
max-file: "5"
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "nc -z localhost 40042 || exit 1"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 10s
|
|
|
|
nginx:
|
|
image: nginx:alpine
|
|
container_name: nginx
|
|
ports:
|
|
- "443:443"
|
|
- "80:80"
|
|
volumes:
|
|
- ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
|
|
- ./certbot/conf:/etc/letsencrypt:ro
|
|
- ./certbot/www:/var/www/certbot:ro
|
|
depends_on:
|
|
- eagle
|
|
restart: unless-stopped
|
|
logging:
|
|
driver: "json-file"
|
|
options:
|
|
max-size: "50m"
|
|
max-file: "3"
|
|
|
|
certbot:
|
|
image: certbot/certbot
|
|
container_name: certbot
|
|
volumes:
|
|
- ./certbot/conf:/etc/letsencrypt
|
|
- ./certbot/www:/var/www/certbot
|
|
entrypoint: "/bin/sh -c 'trap exit TERM; while :; do certbot renew; sleep 12h & wait $${!}; done;'"
|