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"]
