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