File size: 3,879 Bytes
e16348e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# render.yaml: Render Blueprint for ChessTB Explorer
#
# Deploys this repository as a single Docker web service on Render,
# straight from GitHub. See README.md's "Deploying to Render" section
# for the full walkthrough (including the manual, non-Blueprint path);
# deployment steps:
#
#   1. Push this repository to GitHub.
#   2. In the Render Dashboard: New -> Blueprint -> connect the repo.
#      Render finds this file automatically.
#   3. TABLEBASE_PATH is requested before the first deploy. ADMIN_TOKEN
#      and FLASK_SECRET_KEY are generated automatically.
#
# Every push to the connected branch redeploys automatically afterwards.
#
# See https://render.com/docs/blueprint-spec for the full field
# reference for additional configuration options.

services:
  - type: web
    name: chesstb-explorer
    runtime: docker
    # dockerfilePath/dockerContext default to ./Dockerfile and the repo
    # root; no additional path configuration is required.

    # "free" works for casual/demo use, at the cost of the service
    # spinning down after periods of inactivity (slow first request after
    # a wake-up) and a smaller, shared CPU/RAM allocation, which mainly
    # shows up as slower probes rather than incorrect ones. Since probing
    # (tablebase block decompression) is CPU-bound, a dedicated-vCPU plan
    # such as "starter" is worth the upgrade for a deployment expecting
    # real traffic -- see README.md "Deploying to Render" for more on
    # sizing.
    plan: free
    region: oregon   # Region for the Render service.

    # Matches the GET /health route in app.py: 200 once TABLEBASE_PATH has
    # opened successfully, 503 ("degraded") otherwise -- so Render won't
    # mark a deploy healthy until a tablebase is actually reachable and
    # probing.
    healthCheckPath: /health

    envVars:
      # The one setting every deployment genuinely differs on, so it's
      # prompted for here (sync: false) instead of hardcoded. Point this
      # at an http(s):// base URL serving the ChessTB layout remotely
      # (see README.md "Getting the tablebase files") -- REMOTE_MODE
      # defaults to "direct" in config.py, so nothing is written to
      # Render's (ephemeral, and for a set this size, impractically
      # small and expensive) local disk.
      - key: TABLEBASE_PATH
        sync: false

      # Both generated automatically -- Render fills in a random value
      # at deploy time and stores it as a secret env var. Rotate either
      # from the service's "Environment" tab in the Render Dashboard at
      # any time; app.py picks up the new value on the next restart.
      # ADMIN_TOKEN gates /admin and /admin/cache/*; leaving it
      # ungenerated (delete the block below) is also valid -- those
      # routes respond 503 until a token is set, the same as when
      # ADMIN_TOKEN is left unset entirely.
      - key: ADMIN_TOKEN
        generateValue: true
      - key: FLASK_SECRET_KEY
        generateValue: true

      # Render always terminates TLS at its edge, so the browser's own
      # connection to this deployment is HTTPS even though this process
      # itself speaks plain HTTP to Render's proxy. config.py's
      # default for this setting is False, tuned for a local plain-HTTP
      # installation rather than this deployment, so it's set explicitly
      # here instead of left to that default.
      - key: SESSION_COOKIE_SECURE
        value: "true"

      # Not set here: PORT is injected by Render itself at deploy time,
      # and config.py already reads it (falling back to 7860 only when
      # PORT isn't present, e.g. running the same image locally) -- see
      # config.py's "Server" section. SOURCE_REPOSITORY_URL is also left unset;
      # add it as a plain env var from the dashboard, or edit the
      # literal default in config.py, to enable the header's source repository button.