28 lines
959 B
Docker
28 lines
959 B
Docker
# editor-api 镜像 —— 零 npm 依赖,所以没有 package.json / 锁文件 / npm ci
|
||||
|
|
#
|
|||
|
|
# 为什么这么小:
|
|||
|
|
# · base 用 alpine
|
|||
|
|
# · 代码只用 node 内置模块(node:http / node:fs / node:crypto),不需要 npm install
|
|||
|
|
# · git 是必须的:发布 = 在仓库工作区里 add + commit + push
|
|||
|
|
#
|
|||
|
|
# 仓库本体不进镜像 —— 挂载进去(compose 里 /blog)。这样 git pull 不用重建镜像。
|
|||
|
|
|
|||
|
|
FROM node:22-alpine
|
|||
|
|
|
|||
|
|
# git:发布用。ca-certificates:https 远端(CNB / GitHub)要它
|
|||
|
|
RUN apk add --no-cache git ca-certificates
|
|||
|
|
|
|||
|
|
WORKDIR /app
|
|||
|
|
ENV NODE_ENV=production
|
|||
|
|
|
|||
|
|
COPY server.mjs ./
|
|||
|
|
COPY src/ ./src/
|
|||
|
|
|
|||
|
|
# 回收目录(删除的文章挪到这里,在仓库外,不进 git)
|
|||
|
|
RUN mkdir -p /app/trash
|
|||
|
|
|
|||
|
|
EXPOSE 8017
|
|||
|
|
|
|||
|
|
# 没配 EDITOR_TOKEN 时 server.mjs 会自己 process.exit(1),容器随即退出 ——
|
|||
|
|
# 这是刻意的:宁可起不来,也不能以无鉴权状态对公网服务
|
|||
|
|
CMD ["node", "server.mjs"]
|