27 lines
1.0 KiB
Docker
27 lines
1.0 KiB
Docker
# cn-dns-helper 镜像 —— 零 npm 依赖,所以没有 package.json / 锁文件 / npm ci
|
|||
|
|
#
|
||
|
|
# 作用:把「在 Cloudflare 上增删 DNS TXT 记录」这件小事的执行权留在国内机。
|
||
|
|
# 原因见 src/server.mjs 顶部注释:Worker 侧的 CF 凭据没有 DNS 权限,
|
||
|
|
# 而国内机 certimate 里有一条有完整权限的 CF token。
|
||
|
|
#
|
||
|
|
# ★ apk 源换阿里云:国内机器直连 dl-cdn.alpinelinux.org 慢到不可用。
|
||
|
|
# 这里其实一个包都不装(node 内置模块够用),保留这段只为将来加包方便。
|
||
|
|
|
||
|
|
FROM node:22-alpine
|
||
|
|
|
||
|
|
ARG APK_MIRROR=mirrors.aliyun.com
|
||
|
|
RUN if [ -n "$APK_MIRROR" ]; then \
|
||
|
|
sed -i "s#dl-cdn.alpinelinux.org#$APK_MIRROR#g" /etc/apk/repositories; \
|
||
|
|
fi \
|
||
|
|
&& apk add --no-cache ca-certificates
|
||
|
|
|
||
|
|
WORKDIR /app
|
||
|
|
ENV NODE_ENV=production
|
||
|
|
|
||
|
|
COPY src/ ./src/
|
||
|
|
|
||
|
|
EXPOSE 8018
|
||
|
|
|
||
|
|
# 没配 DNS_HELPER_TOKEN 时 server.mjs 会自己 process.exit(1),容器随即退出 ——
|
||
|
|
# 刻意的:宁可起不来,也不能以无鉴权状态对公网服务。
|
||
|
|
CMD ["node", "src/server.mjs"]
|