# ---- 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