3.7 KiB
Sammo Core2026 Docker deployment
이 저장소는 새 호스트에서 .env 하나로 Core2026 Gateway, PostgreSQL, Redis,
Caddy와 Git/PM2 release-controller를 기동하기 위한 공개 배포 골격입니다. 게임
profile은 관리자 화면에서 각각 다른 branch 또는 commit을 선택해 DB 유지 배포,
DB 초기화 배포와 rollback을 수행합니다.
빠른 시작
Docker Engine과 Compose plugin이 설치된 Linux 호스트에서 다음을 실행합니다.
cp .env.example .env
# .env의 domain, Core2026 URL, Kakao key와 모든 비밀값을 교체합니다.
docker compose up -d --build --wait
docker compose ps
DNS의 DOMAIN A/AAAA record가 호스트를 가리키고 80/443 TCP 및 443 UDP가
열려 있으면 Caddy가 인증서를 자동 발급합니다. Kakao Developers에는
https://DOMAIN/gateway/oauth/callback을 redirect URI로 등록합니다. 첫 기동은
Core2026 clone, frozen-lockfile install, build와 Gateway migration 때문에 수 분이
걸릴 수 있습니다.
INITIAL_ADMIN_*은 사용자 table이 비어 있을 때만 superuser를 한 번 생성합니다.
그 뒤 /gateway/admin/server-operations에서 che, kwe, pwe, twe, nya,
pya, hwe마다 source branch/commit을 독립 선택합니다. DB 유지 배포는 현
시즌을 보존하고, DB 초기화 배포는 scenario를 다시 seed합니다. Gateway 자체의
배포와 이전 commit rollback은 같은 화면의 별도 release 영역에서 처리됩니다.
데이터와 복구 경계
- PostgreSQL, Redis, Core clone/worktree, PM2 상태, Caddy 인증서와 user icon은
named volume 또는
data/image에 보존됩니다. /image/*는 앱 artifact가 아니며data/image/의 별도 운영 자산을 제공합니다.- 일반
docker compose down은 volume을 보존합니다.down --volumes는 DB와 release 상태를 삭제하는 파괴적 명령이므로 backup 없이 실행하지 않습니다. - 앱 rollback은 Prisma migration을 되돌리지 않습니다. 이전 앱과 새 schema의 호환성을 배포 전에 확인합니다.
- Core2026 저장소가 비공개라면 이 공개 저장소에 credential을 추가하지 말고, 호스트의 read-only deploy key나 credential helper를 별도 override로 mount합니다.
상태 확인과 로그:
docker compose ps
docker compose logs --tail=200 runtime caddy
docker compose exec runtime pnpm --filter @sammo-ts/release-controller status
개발 bind 모드
로컬 Core2026 checkout을 container에 bind하고 DB/Redis/Caddy는 같은 구성으로
사용할 수 있습니다. .env에 CORE_DEV_PATH=/absolute/path/to/core2026,
host 사용자의 DEV_UID/DEV_GID, PUBLIC_SCHEME=http, DOMAIN=localhost를
추가한 뒤 실행합니다. 기본 UID/GID는 1000:1000입니다.
docker compose -f compose.yaml -f compose.dev.yaml up -d --build
docker compose exec runtime pnpm --filter @sammo-ts/gateway-api dev
docker compose exec runtime pnpm --filter @sammo-ts/gateway-frontend dev --host 0.0.0.0
개발 override의 runtime은 의존성과 Prisma client를 준비한 뒤 대기합니다. 필요한 watch process를 별도 shell에서 실행합니다. 운영 release-controller를 시험하려면 override 없이 production mode를 사용해야 하며, bind checkout의 Git metadata에 container worktree 경로를 등록하지 않도록 주의합니다.
설정 검증
.env를 채운 뒤 실제 값을 출력하지 않는 검사를 실행합니다.
./scripts/check.sh
검사는 production/development Compose model과 Caddyfile 구문을 확인합니다.
docker compose config 전체 출력에는 펼쳐진 비밀값이 포함될 수 있으므로 CI
artifact나 이슈에 그대로 첨부하지 않습니다.