Files
herryyun 7c25c89992
CI / test (ubuntu-latest, node 22) (push) Failing after 33m10s
CI / test (ubuntu-latest, node 24) (push) Failing after 34m41s
CI / tooling (lint, imports, typecheck) (push) Failing after 36m11s
CI / test (windows-latest, node 22) (push) Canceled after 0s
CI / test (windows-latest, node 24) (push) Canceled after 0s
实现账号绑定、持久登录与跨设备对局恢复
2026-10-14 23:22:50 +08:00

33 lines
1.8 KiB
YAML

# 卫戍协议:盟约 · one command: `docker compose up -d` (docs/DEPLOY.md「Docker」).
# The service builds the repository's own Dockerfile and tags the image; no other service is needed.
services:
stronghold:
build:
context: .
# A) download the art while building (~550 MB, needs internet): uncomment
# args: { FETCH_ASSETS: "1" }
image: stronghold-protocol
restart: unless-stopped
ports:
- "3000:3000"
environment:
# Skland (森空岛) account binding: SP_SKLAND=1 turns the module on (docs/skland.md) and SP_SKLAND_DB points its
# SQLite credential store at the named volume below. To run without the module, comment out (or delete) both
# lines — the server then keeps no account credentials at all and the volume is never written.
SP_SKLAND: "1"
SP_SKLAND_DB: /app/skland-data/skland.db
volumes:
# The credential database must survive `docker compose down`, `docker compose up --build` and image rebuilds, so
# it lives in a named volume instead of the container's writable layer. A named volume behaves the same on Windows,
# macOS and Linux and needs no host path or permission setup; `docker compose down -v` is what deletes it.
# The database is a secret: never publish or serve it over HTTP (it is outside every static mount), and back it
# up carefully (docs/DEPLOY.md「Docker」).
- skland-data:/app/skland-data
# B) the host's art instead of the downloaded copy, read-only (prepare it with `node tools/setup.mjs`): uncomment
# - ./public/assets:/app/public/assets:ro
# One named volume, one runtime database. `docker volume inspect` shows where the host keeps it; it is private to the
# container user, so a bind mount (`./skland-data:/app/skland-data`) is only needed to read the file from the host.
volumes:
skland-data: