การ Deploy แอปพลิเคชันแบบเดิมมักมีปัญหาเรื่อง “เครื่องฉันรันได้ แต่เครื่องอื่นรันไม่ได้” เนื่องจาก environment ไม่เหมือนกัน แต่ปัญหานี้จะหายไปทันทีเมื่อคุณใช้ Docker ซึ่งช่วยแพ็กแอป Node.js พร้อม dependency ทั้งหมดให้อยู่ใน container เดียว ทำให้สามารถนำไป deploy ที่ไหนก็ได้อย่างสม่ำเสมอ
บทความนี้จะพาคุณ Deploy Node.js ด้วย Docker แบบ Hands-on ตั้งแต่การสร้าง Dockerfile → Build Image → Run Container → ทดสอบใช้งานจริง

พื้นฐานที่ต้องมี
- Ubuntu Server 25.10
- ติดตั้ง Docker เรียบร้อย
- มี Node.js App (เช่น
app.js) - เปิด port ที่ต้องใช้งาน
ขั้นตอนที่ 1 ติดตั้ง Docker (ถ้ายังไม่มี)
– เปิดใช้งาน Docker
– ตรวจสอบ
ขั้นตอนที่ 2 เตรียมโปรเจกต์ Node.js
– โครงสร้างไฟล์
│── package.json
– ตัวอย่าง app.js
const server = http.createServer((req, res) => {
res.end(‘Hello from Docker Node.js\n‘);
});
server.listen(port, () => {
console.log(`Server running on port ${port}`);
});
ขั้นตอนที่ 3 สร้าง Dockerfile
– สร้างไฟล์
– ใส่โค้ดดังนี้
# สร้าง working directory
WORKDIR /app
# copy package.json
COPY package*.json ./
# install dependencies
RUN npm install
# copy source code
COPY . .
# เปิด port
EXPOSE 3000
# start app
CMD [“node”, “app.js”]
ขั้นตอนที่ 4 สร้าง Image
-t= ตั้งชื่อ image
ขั้นตอนที่ 5 Run Container
อธิบาย
-d= run background-p= map port--name= ตั้งชื่อ container
ขั้นตอนที่ 6 ตรวจสอบ Container
ขั้นตอนที่ 7 ทดสอบ
– หรือเปิด browser
ขั้นตอนที่ 8 Stop / Start Container
ขั้นตอนที่ 9 ลบ Container
(Advanced) ใช้ Docker Compose
สร้างไฟล์ docker-compose.yml
app:
build: .
ports:
– “3000:3000”
restart: always
-รัน
ภาพรวมการทำงาน
ข้อควรระวัง
- ไม่ควรใช้ image ขนาดใหญ่ (ควรใช้
node:alpine) - อย่ารัน container เป็น root (ใน production)
- ใช้
.dockerignoreลดขนาด image - ควรใช้ร่วมกับ Nginx เป็น Reverse Proxy
สรุป
การ Deploy Node.js ด้วย Docker ช่วยให้คุณสามารถควบคุม environment ได้ 100% ลดปัญหา dependency และเพิ่มความสะดวกในการ deploy ทั้งใน local และ production environment นอกจากนี้ยังสามารถ scale ระบบได้ง่าย และรองรับการทำ CI/CD ได้ในอนาคต
หากคุณกำลังเริ่มเข้าสู่สาย DevOps หรือ SysAdmin การเข้าใจ Docker ถือเป็น “ทักษะสำคัญ” ที่ควรฝึกให้คล่องตั้งแต่วันนี้
ที่มา:
– https://stackoverflow.com/questions/52064183/docker-in-docker
– https://medium.com/%40mrdevsecops/dockerfile-node-example-bbd53a2caf0a
– https://medium.com/%40muralidharan_vivekananthan/day-21-learning-devops-docker-build-docker-image-for-a-sample-backend-app-node-be47ebd45bb5



