10306241 Lab 4: สร้างเว็บด้วย Nginx และพัฒนา REST API ด้วย Node.js บน Docker
title: ทดลองการสร้างเว็บด้วย Nginx และ NodeJS โดยใช้ Docker description: เรียนรู้การรัน Nginx และ NodeJS บน Docker พร้อมสร้าง REST API ด้วย Express และทดสอบด้วย Postman
ทดลองการสร้างเว็บด้วย Nginx และ NodeJS โดยใช้ Docker
สารบัญ
- บทนำ
- #ติดตั้ง-postman
- #รัน-nginx-ด้วย-docker
- [รัน NodeJS Server ด้วย Docker]( #การส่งงาน
บทนำ
ในปฏิบัติการนี้ นักศึกษาจะได้เรียนรู้การสร้างและให้บริการเว็บไซต์โดยใช้ Docker ร่วมกับ Nginx และ Node.js
หัวข้อที่ศึกษา ได้แก่
- การใช้งาน Container ด้วย Docker
- การให้บริการ Static Website ด้วย Nginx
- การสร้าง REST API ด้วย Express.js
- การทดสอบ API ด้วย Postman
- การบริหารจัดการ Web Service เบื้องต้น
💡 ถึงแม้เนื้อหารายวิชาจะกล่าวถึง Wix.com แต่ Lab นี้จะเน้นการทำงานกับ Docker และ Node.js Server เพื่อให้เข้าใจโครงสร้าง Web Application ในโลกจริงมากขึ้น
ติดตั้ง Postman
ดาวน์โหลด Postman จากลิงก์ด้านล่าง
👉 https://www.postman.com/downloads/
หลังจากติดตั้งเสร็จแล้ว ให้เปิดโปรแกรม Postman เพื่อใช้ทดสอบ API ในขั้นตอนถัดไป
รัน Nginx ด้วย Docker
1. สร้าง Container
docker run -d \
--name myapp-static \
-p 80:80 \
-v C:/Users/ACER/html:/usr/share/nginx/html:ro \
nginx:stable2. สร้างไฟล์เว็บไซต์
สร้างไฟล์
C:/Users/ACER/html/index.htmlตัวอย่างโค้ด
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta
name="viewport"
content="width=device-width, initial-scale=1.0"
/>
</head>
<body>
<h1>Hello</h1>
</body>
</html>3. ทดสอบการทำงาน
เปิด Browser ไปที่
http://localhost:80หากทำงานถูกต้อง จะเห็นข้อความ
Hello4. ปรับแต่งหน้าเว็บ
ให้แก้ไขหน้าเว็บโดยเพิ่มข้อมูลส่วนตัว
รหัสนักศึกษา
ชื่อ - นามสกุล
ชื่อเล่น
ข้อมูลเพิ่มเติมอื่น ๆสิ่งที่สามารถเพิ่มเติมได้
- รูปถ่าย
- สีสันของเว็บไซต์
- CSS ตกแต่งหน้าเว็บ
- Layout ที่สวยงาม
✅ บันทึกภาพหน้าจอเพื่อนำส่ง Assignment
รัน NodeJS Server ด้วย Docker
1. เปิด Node Container
docker run --rm -it \
-p 3000:3000 \
-v C:/Users/ACER/myapp:/usr/src/app \
-w /usr/src/app \
node:18-alpine shหากสำเร็จจะปรากฏ
/usr/src/app #2. สร้าง package.json
ไฟล์
C:/Users/ACER/myapp/package.json{
"name": "test-api",
"version": "1.0.0",
"description": "A simple Express API for testing GET, POST, PUT, DELETE",
"main": "app.js",
"scripts": {
"start": "node app.js"
},
"dependencies": {
"express": "^4.18.2"
}
}3. สร้าง app.js
ไฟล์
C:/Users/ACER/myapp/app.jsconst express = require("express");
const app = express();
const port = 3000;
app.use(express.json());
let items = [];
let nextId = 1;
app.get("/items", (req, res) => {
res.json(items);
});
app.get("/items/:id", (req, res) => {
const item = items.find(
(i) => i.id === parseInt(req.params.id)
);
if (!item) {
return res.status(404).json({
error: "Item not found"
});
}
res.json(item);
});
app.post("/items", (req, res) => {
const { name } = req.body;
if (!name) {
return res.status(400).json({
error: "Name is required"
});
}
const newItem = {
id: nextId++,
name
};
items.push(newItem);
res.status(201).json(newItem);
});
app.put("/items/:id", (req, res) => {
const id = parseInt(req.params.id);
const item = items.find(
(i) => i.id === id
);
if (!item) {
return res.status(404).json({
error: "Item not found"
});
}
item.name = req.body.name;
res.json(item);
});
app.delete("/items/:id", (req, res) => {
const id = parseInt(req.params.id);
items = items.filter(
(i) => i.id !== id
);
res.status(204).end();
});
app.listen(port, () => {
console.log(
`Test API listening at http://localhost:${port}`
);
});4. ติดตั้ง Package
ภายใน Container
npm install5. เริ่มต้น Server
npm startผลลัพธ์
Test API listening at http://localhost:30006. ทดสอบ API
เปิด Browser
http://localhost:3000/itemsหรือใช้ Postman
GET /itemsตัวอย่างข้อมูลทดสอบ
Create Item
{
"name": "ITSCI"
}Endpoints ที่ต้องทดสอบ
| Method | Endpoint |
|---|---|
| GET | /items |
| GET | /items/1 |
| POST | /items |
| PUT | /items/1 |
| DELETE | /items/1 |
การส่งงาน
Lab 4.1
ส่งภาพหน้าจอเว็บไซต์ข้อมูลส่วนตัวที่ออกแบบและตกแต่งเรียบร้อย
Lab 4.2
ส่งภาพหน้าจอการทำงานของ API จำนวน 5 รายการ
- List All Items
- Get Item By ID
- Create Item
- Delete Item
- Edit Item
โดยสามารถใช้ Postman ในการทดสอบและบันทึกหน้าจอได้
✅ ควรแสดงทั้งหน้าจอ Postman และผลลัพธ์ที่แสดงจาก Browser เพื่อให้เห็นการเปลี่ยนแปลงของข้อมูลอย่างชัดเจน