Files
blog/deploy/cn-certkeeper/docker-compose.yml
T

36 lines
1.5 KiB
YAML
Raw Normal View History

services:
cn-certkeeper:
build: /srv/cn-certkeeper
image: cn-certkeeper:local
container_name: cn-certkeeper
restart: unless-stopped
# ★ 只绑本机回环:容器内的 HOST 必须是 0.0.0.0,否则 -p 映射进不来
# (docker 的端口映射打的是容器 IP,不是容器内的 127.0.0.1)。
# 外部要访问就经 1Panel/openresty 反代,容器端口不直接对公网。
ports:
- "127.0.0.1:8019:8019"
environment:
# 时区:日志和「每日 4:10 续期」都按这个走,不设就成 UTC(差 8 小时)
TZ: Asia/Shanghai
DATA_DIR: /data
HOST: 0.0.0.0
PORT: "8019"
# AUTH_TOKEN:HTTP 接口的共享密钥(人工触发 / 查状态用)
AUTH_TOKEN: ${AUTH_TOKEN:?}
# TOKEN_SECRET:★ 必须与 Cloudflare Worker 侧**完全一致** ——
# 凭据是用它派生 AES 密钥加密的,不一致就整片解不开。
TOKEN_SECRET: ${TOKEN_SECRET:?}
# 每天 04:10(北京时间)跑一次续期检查
RENEW_HOUR: "4"
RENEW_MINUTE: "10"
# 启动时做一次只读探测(只握手看剩余天数,不签发、不写 DNS)
RUN_ON_START: check
PROBE_TIMEOUT_MS: "10000"
volumes:
- /srv/cn-certkeeper/data:/data
healthcheck:
test: ["CMD", "node", "-e", "fetch('http://127.0.0.1:8019/health').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))"]
interval: 60s
timeout: 8s
retries: 3
start_period: 15s