FROM node:20-alpine # tzdata 讓容器能透過 TZ 環境變數使用本地時區(配對名稱以當下時間命名) RUN apk add --no-cache tzdata WORKDIR /app COPY package.json ./ RUN npm install --omit=dev # 建置時抓取前端函式庫,之後在區網離線環境也能使用 # mind-ar 1.2.2 的編譯器是 ES module,需要一併抓取它的 chunk 檔(檔名含 hash,隨版本固定) ARG AFRAME_VERSION=1.4.2 ARG MINDAR_VERSION=1.2.2 RUN mkdir -p public/vendor \ && wget -q -O public/vendor/aframe.min.js "https://aframe.io/releases/${AFRAME_VERSION}/aframe.min.js" \ && wget -q -O public/vendor/mindar-image-aframe.prod.js "https://cdn.jsdelivr.net/npm/mind-ar@${MINDAR_VERSION}/dist/mindar-image-aframe.prod.js" \ && wget -q -O public/vendor/mindar-image.prod.js "https://cdn.jsdelivr.net/npm/mind-ar@${MINDAR_VERSION}/dist/mindar-image.prod.js" \ && wget -q -O public/vendor/controller-495b585f.js "https://cdn.jsdelivr.net/npm/mind-ar@${MINDAR_VERSION}/dist/controller-495b585f.js" \ && wget -q -O public/vendor/ui-85e81035.js "https://cdn.jsdelivr.net/npm/mind-ar@${MINDAR_VERSION}/dist/ui-85e81035.js" COPY server.js ./ COPY public ./public ENV NODE_ENV=production EXPOSE 3510 3511 CMD ["node", "server.js"]