- src/config.js 的 API_KEY 改为从构建时环境变量 TINODE_API_KEY 注入, 不再依赖官方demo默认值;未设置时保留原demo key作为本地快速测试的兜底 - webpack.config.js 新增 DefinePlugin 完成注入,并自动加载(gitignored的) .env.local,开发者本地调试不需要每次手动export - 新增 Dockerfile(node构建+nginx serve) 和 docker/nginx.conf - 新增 .gitea/workflows/deploy.yml:手动触发的蓝绿发布流程
38 lines
1.1 KiB
Docker
38 lines
1.1 KiB
Docker
# ---- Stage 1: build static assets ----
|
|
FROM node:22-alpine AS build
|
|
|
|
WORKDIR /app
|
|
COPY package.json package-lock.json ./
|
|
RUN npm ci
|
|
COPY . .
|
|
|
|
# TINODE_API_KEY is read by webpack.config.js (via DefinePlugin) at build time.
|
|
ARG TINODE_API_KEY=
|
|
ENV TINODE_API_KEY=$TINODE_API_KEY
|
|
|
|
RUN npm run build
|
|
|
|
# ---- Stage 2: serve with nginx ----
|
|
FROM nginx:alpine
|
|
|
|
COPY docker/nginx.conf /etc/nginx/conf.d/default.conf
|
|
|
|
WORKDIR /usr/share/nginx/html
|
|
|
|
COPY --from=build /app/umd ./umd
|
|
COPY --from=build /app/css/base.min.css ./css/base.min.css
|
|
COPY --from=build /app/index.html ./index.html
|
|
COPY --from=build /app/index-dev.html ./index-dev.html
|
|
COPY --from=build /app/manifest.json ./manifest.json
|
|
COPY --from=build /app/service-worker.js ./service-worker.js
|
|
COPY --from=build /app/version.js ./version.js
|
|
COPY --from=build /app/img ./img
|
|
COPY --from=build /app/audio ./audio
|
|
# Push notifications are not configured for this deployment yet.
|
|
RUN echo "" > ./firebase-init.js
|
|
|
|
HEALTHCHECK --interval=1m --timeout=3s --start-period=10s \
|
|
CMD wget -q -O /dev/null http://localhost/ || exit 1
|
|
|
|
EXPOSE 80
|