본문으로 건너뛰기

เนื้อหาภาษาไทย / 태국어 콘텐츠

시스템 가이드 검수 완료된 콘텐츠

Docker กับ Web Application: สร้าง Container สำหรับเว็บแอปพลิเคชันง่ายๆ (ตัวอย่าง Node.js)

บทความนี้ได้สาธิตวิธีการสร้าง Docker Container สำหรับเว็บแอปพลิเคชัน Node.js อย่างง่าย ตั้งแต่การสร้างแอปพลิเคชัน, การเขียน Dockerfile เพื่อกำหนดสภาพแวดล้อม, กา...

Docker กับ Web Application: สร้าง Container สำหรับเว็บแอปพลิเคชันง่ายๆ (ตัวอย่าง Node.js)

ในบทเรียนที่แล้ว เราได้เรียนรู้พื้นฐานเกี่ยวกับ Docker และเหตุผลที่มันเป็นเครื่องมือสำคัญสำหรับนักพัฒนาและ DevOps ในบทนี้ เราจะลงมือปฏิบัติจริง โดยสร้าง Docker Container สำหรับเว็บแอปพลิเคชัน Node.js แบบง่าย เพื่อให้เห็นภาพการใช้งานจริง

ทำไมต้อง Dockerize Web Application?

ก่อนที่เราจะเริ่มสร้าง Container เรามาทบทวนเหตุผลหลักๆ ที่เราควร Dockerize Web Application กันก่อน:

  • ความสอดคล้องของสภาพแวดล้อม: Docker ช่วยให้มั่นใจได้ว่าแอปพลิเคชันของเราจะทำงานเหมือนกันในทุกสภาพแวดล้อม ไม่ว่าจะเป็นเครื่องของเรา, สภาพแวดล้อมการทดสอบ, หรือ Production
  • การแยกส่วน: Container จะแยกแอปพลิเคชันของเราออกจากระบบปฏิบัติการหลัก ทำให้แอปพลิเคชันมีความปลอดภัยมากขึ้น และป้องกันปัญหาการชนกันของ dependencies
  • การจัดการทรัพยากร: Docker ช่วยให้เราจัดการทรัพยากรที่แอปพลิเคชันใช้ได้อย่างมีประสิทธิภาพมากขึ้น
  • การ Deploy ที่ง่ายและรวดเร็ว: การสร้าง, แชร์, และ Deploy Container ทำได้ง่ายและรวดเร็ว ทำให้เราสามารถนำแอปพลิเคชันขึ้นใช้งานได้อย่างรวดเร็ว

ขั้นตอนการสร้าง Docker Container สำหรับ Node.js Application

เราจะสร้างเว็บแอปพลิเคชัน Node.js อย่างง่ายที่แสดงข้อความ "Hello, Docker!" จากนั้นเราจะ Dockerize แอปพลิเคชันนี้

1. สร้าง Node.js Application

เริ่มต้นด้วยการสร้าง directory สำหรับโปรเจ็กต์ของเรา:

mkdir node-docker-app
cd node-docker-app

จากนั้นสร้างไฟล์ package.json เพื่อจัดการ dependencies:

npm init -y

สร้างไฟล์ index.js ซึ่งจะเป็นโค้ดหลักของเว็บแอปพลิเคชันของเรา:

// index.js
const express = require('express');
const app = express();
const port = 3000;

app.get('/', (req, res) => {
  res.send('Hello, Docker!');
});

app.listen(port, () => {
  console.log(`App listening on port ${port}`);
});

เราใช้ Express.js ซึ่งเป็น framework ยอดนิยมสำหรับสร้างเว็บแอปพลิเคชัน Node.js ติดตั้ง Express.js:

npm install express

ตอนนี้เรามีเว็บแอปพลิเคชัน Node.js ที่พร้อมใช้งานแล้ว ลองรันดู:

node index.js

เปิด browser ไปที่ http://localhost:3000 คุณควรเห็นข้อความ "Hello, Docker!"

2. สร้าง Dockerfile

Dockerfile คือไฟล์ที่ประกอบไปด้วยคำสั่งที่ใช้สร้าง Docker Image เราจะสร้างไฟล์ Dockerfile ใน directory เดียวกับ index.js:

# Dockerfile
FROM node:16

# สร้าง directory สำหรับ app
WORKDIR /app

# คัดลอก package.json และ package-lock.json (ถ้ามี)
COPY package*.json ./

# ติดตั้ง dependencies
RUN npm install

# คัดลอก source code ของ app
COPY . .

# เปิด port 3000
EXPOSE 3000

# Command ที่ใช้รัน app
CMD ["node", "index.js"]

มาดูคำสั่งแต่ละบรรทัดใน Dockerfile กัน:

  • FROM node:16: ระบุ base image ที่เราจะใช้ สร้าง Container ของเรา เราใช้ Node.js เวอร์ชั่น 16
  • WORKDIR /app: กำหนด working directory ภายใน Container เป็น /app
  • COPY package*.json ./: คัดลอกไฟล์ package.json และ package-lock.json (ถ้ามี) จาก host machine ไปยัง Container
  • RUN npm install: รันคำสั่ง npm install ภายใน Container เพื่อติดตั้ง dependencies
  • COPY . .: คัดลอก source code ทั้งหมดจาก host machine ไปยัง Container
  • EXPOSE 3000: บอก Docker ว่า Container จะ listen บน port 3000
  • CMD ["node", "index.js"]: กำหนด command ที่ใช้รันแอปพลิเคชัน เมื่อ Container เริ่มทำงาน

3. สร้าง Docker Image

ตอนนี้เรามี Dockerfile แล้ว เราสามารถสร้าง Docker Image ได้โดยใช้คำสั่ง docker build:

docker build -t node-docker-app .

คำสั่งนี้จะสร้าง Docker Image ชื่อ node-docker-app โดยใช้ Dockerfile ที่อยู่ใน directory ปัจจุบัน (.)

หลังจากสร้าง Image เสร็จแล้ว คุณสามารถดู Image ที่สร้างได้โดยใช้คำสั่ง:

docker images

4. รัน Docker Container

เมื่อเรามี Docker Image แล้ว เราสามารถรัน Container จาก Image นั้นได้โดยใช้คำสั่ง docker run:

docker run -p 3000:3000 node-docker-app

คำสั่งนี้จะรัน Container จาก Image node-docker-app และ map port 3000 บน host machine ไปยัง port 3000 ใน Container (-p 3000:3000) การ Map Port นี้จะทำให้เราสามารถเข้าถึงแอปพลิเคชันที่รันอยู่ใน Container ผ่าน browser ได้

เปิด browser ไปที่ http://localhost:3000 คุณควรเห็นข้อความ "Hello, Docker!" อีกครั้ง แต่ครั้งนี้แอปพลิเคชันกำลังรันอยู่ภายใน Docker Container

5. ตรวจสอบ Container

คุณสามารถดู Container ที่กำลังรันอยู่ได้โดยใช้คำสั่ง:

docker ps

คำสั่งนี้จะแสดงรายการ Container ที่กำลังรันอยู่ รวมถึง Container ID, Image ที่ใช้, port mapping, และสถานะ

หากต้องการหยุด Container คุณสามารถใช้คำสั่ง:

docker stop <container_id>

โดยแทนที่ <container_id> ด้วย Container ID ที่ได้จากคำสั่ง docker ps

สรุป

ในบทนี้ เราได้เรียนรู้วิธีสร้าง Docker Container สำหรับเว็บแอปพลิเคชัน Node.js อย่างง่าย เราได้สร้าง Dockerfile, สร้าง Docker Image, และรัน Docker Container เราได้เห็นว่า Docker ช่วยให้เราสร้างสภาพแวดล้อมที่สอดคล้องกันและแยกส่วนสำหรับแอปพลิเคชันของเราได้อย่างไร

ในบทเรียนต่อไป เราจะเรียนรู้เกี่ยวกับ Docker Volume ซึ่งเป็นวิธีจัดการข้อมูลแบบถาวรใน Container

Office.in.th Custom Service

이 구조를 바탕으로 시스템을 개발하거나 맞춤 변경하고 싶으신가요?

Office.in.th는 엔터프라이즈 웹 애플리케이션, API 연동, 공공/민간 업무 관리 시스템을 설계·개발하며 장기 지원을 제공합니다.

소프트웨어 개발 서비스 보기