Docker - trabnm1313/SDTP GitHub Wiki

Docker image

Front-end

Dockerfile Front-end

FROM node:16.14.2
  • เรียกใช้ base image ที่มาเป็นสภาพแวดล้อมหลักในโปรเจค โดยสร้างจาก node:16.14.2
WORKDIR /app
  • กำหนด Directory สำหรับการทำงานให้เริ่มต้นทำงานที่ /app
COPY . .
  • คัดลอกไฟล์ต่าง ๆ มาใส่ใน Directory ชื่อ app
RUN yarn install
  • เพื่อทำการสั่ง yarn install เพื่อติดตั้ง dependency ต่าง ๆ ที่กำหนดไว้ใน package.json
RUN yarn build
  • เพื่อทำการสั่ง yarn build สำหรับการสร้างโปรเจค
CMD ["yarn", "run", "serve"]
  • กำหนด default command ซึ่งเอาไว้รันคำสั่ง yarn run serve

Back-end

Dockerfile Back-end

FROM node:16.14.2
  • เรียกใช้ base image ที่มาเป็นสภาพแวดล้อมหลักในโปรเจค โดยสร้างจาก node:16.14.2
WORKDIR /app
  • กำหนด Directory สำหรับการทำงานให้เริ่มต้นทำงานที่ /app
COPY . .
  • คัดลอกไฟล์ต่าง ๆ มาใส่ใน Directory ชื่อ app
RUN npm install --save
  • เพื่อทำการสั่ง npm install เพื่อลงสิ่งต่าง ๆ ที่กำหนดไว้ใน package.json
CMD ["node", "index.js"]
  • กำหนด default command ซึ่งเอาไว้รันคำสั่ง node index.js

Best Practices for Writing Dockerfiles

มีการใช้ Best Practices ด้วยกันสองข้อ

  • Exclude with .dockerignore คือ การใช้ .dockerignore ในการยกเว้นเนื้อหาที่ไม่จำเป็นต้องนำไปใช้ อาทิเช่น node_modules
  • Mininal Layer คือ การสร้าง Layer ของ Dockerfile ให้น้อยที่สุดโดยมีการแบ่งออกเป็น สาม Layer ได้แก่ FROM, COPY และ CMD