# 使用 Node.js 作為基礎映像 FROM node:18-slim AS builder # git RUN apt-get update && apt-get install -y git && rm -rf /var/lib/apt/lists/* # 設定工作目錄 WORKDIR /app # 複製 package.json 和 package-lock.json (或 yarn.lock) 到工作目錄 COPY package*.json ./ # 安裝依賴 RUN npm install --legacy-peer-deps # 額外補上 rollup binary (避免 npm optional bug) RUN npm install @rollup/rollup-linux-x64-gnu --force # 複製專案原始碼 COPY . . # 構建前端應用 RUN npm run build # 使用一個更小的映像來提供靜態文件 (例如 Nginx) FROM nginx:alpine # 將構建好的檔案複製到 Nginx 預設目錄 COPY --from=builder /app/dist /usr/share/nginx/html # (可選) 複製自定義 Nginx 設定檔 # COPY nginx.conf /etc/nginx/conf.d/default.conf # 複製 entrypoint 腳本 并轉成 LF 及 賦予執行權限 COPY Scripts/docker-entrypoint.sh /docker-entrypoint.sh RUN sed -i 's/\r$//' /docker-entrypoint.sh && chmod +x /docker-entrypoint.sh # 暴露 Nginx 預設的 80 端口 EXPOSE 80 # 啟動 Nginx ENTRYPOINT ["/docker-entrypoint.sh"] CMD ["nginx", "-g", "daemon off;"]