FROM node:20-alpine # สำหรับอ่านค่า .env ที่วางไว้ระดับ compose (ไม่ copy เข้า image) ENV NODE_ENV=development ENV TZ=Asia/Bangkok WORKDIR /app # สร้าง user ไม่ใช่ root (ปลอดภัยขึ้น) RUN addgroup -S dms && adduser -S dms -G dms # runtime tools + build deps ชั่วคราว (สำหรับ bcrypt ฯลฯ) RUN apk add --no-cache python3 make g++ curl # ติดตั้ง nodemon ไว้ให้ RUN npm i -g nodemon COPY package.json package-lock.json* ./ RUN (npm ci --omit=dev || npm install --omit=dev) EXPOSE 3001 USER dms CMD ["node", "src/index.js"] # backend/Dockerfile (Node.js ESM)