FROM node:18-alpine WORKDIR /app # 複製package文件 COPY package*.json ./ # 安裝依賴 RUN npm ci --only=production # 複製應用代碼 COPY . . # 創建非root用戶 RUN addgroup -g 1001 -S nodejs RUN adduser -S nextjs -u 1001 # 更改文件所有權 RUN chown -R nextjs:nodejs /app USER nextjs # 暴露端口 EXPOSE 4000 # 健康檢查 HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \ CMD curl -f http://localhost:4000/health || exit 1 # 啟動命令 CMD ["npm", "start"]