Containerization Deployment
การใช้ Docker ในการสร้าง container สำหรับแอปพลิเคชัน และใช้ Kubernetes หรือ Docker Swarm ในการจัดการการ deploy container เหล่านั้น ช่วยในการจัดการสภาพแวดล้อมและการขยายตัวของแอปพลิเคชันอย่างมีประสิทธิภาพ
Build a Docker Image just like how you would configure a VM
Docker
Docker เป็นเครื่องมือที่ช่วยในการสร้างและจัดการ container ซึ่งเป็นหน่วยเล็ก ๆ ของซอฟต์แวร์ที่บรรจุโค้ดและการขึ้นอยู่ทั้งหมดของแอปพลิเคชัน
การสร้างและใช้ Docker
ติดตั้ง Docker:
สร้างไฟล์ Dockerfile: ตัวอย่างไฟล์
Dockerfile
สำหรับแอปพลิเคชัน Node.js:Dockerfile# ใช้ภาพพื้นฐานของ Node.js FROM node:14 # ตั้งค่าดirectoryทำงานใน container WORKDIR /app # คัดลอกไฟล์ package.json และ package-lock.json COPY package*.json ./ # ติดตั้ง dependencies RUN npm install # คัดลอกไฟล์โปรเจคทั้งหมดไปยัง container COPY . . # เปิดพอร์ตที่แอปพลิเคชันจะรัน EXPOSE 3000 # คำสั่งรันแอปพลิเคชัน CMD ["npm", "start"]
สร้าง Docker Image:
bashdocker build -t my-app .
รัน Docker Container:
bashdocker run -p 3000:3000 my-app
Kubernetes
Kubernetes เป็นระบบที่ช่วยในการจัดการ container แบบกระจาย รวมถึงการปรับขนาด การอัปเดต และการตรวจสอบสถานะของ container
การติดตั้ง Kubernetes
ติดตั้ง Kubernetes:
ติดตั้ง Minikube สำหรับการรัน Kubernetes ในเครื่อง:
เริ่ม Minikube:
bashminikube start
การปรับใช้แอปพลิเคชันด้วย Kubernetes
สร้างไฟล์ Deployment: ตัวอย่างไฟล์
deployment.yaml
สำหรับแอปพลิเคชัน Node.js:yamlapiVersion: apps/v1 kind: Deployment metadata: name: my-app spec: replicas: 3 selector: matchLabels: app: my-app template: metadata: labels: app: my-app spec: containers: - name: my-app image: my-app:latest ports: - containerPort: 3000
สร้างไฟล์ Service: ตัวอย่างไฟล์
service.yaml
:yamlapiVersion: v1 kind: Service metadata: name: my-app-service spec: type: NodePort selector: app: my-app ports: - port: 3000 targetPort: 3000 nodePort: 30001
ปรับใช้ Deployment และ Service:
bashkubectl apply -f deployment.yaml kubectl apply -f service.yaml
เข้าถึงแอปพลิเคชัน:
bashminikube service my-app-service
Docker Swarm
Docker Swarm เป็นเครื่องมือที่ใช้ในการจัดการ container แบบกระจาย โดยมีการทำงานที่ง่ายกว่า Kubernetes
การใช้ Docker Swarm
สร้าง Swarm Cluster:
bashdocker swarm init
สร้าง Service: ตัวอย่างการสร้าง Service สำหรับแอปพลิเคชัน Node.js:
bashdocker service create --name my-app --publish published=3000,target=3000 my-app
ตรวจสอบ Service:
bashdocker service ls
สเกล Service:
bashdocker service scale my-app=3
ลบ Service:
bashdocker service rm my-app
สรุป
การใช้ Docker ในการสร้าง container สำหรับแอปพลิเคชัน และการใช้ Kubernetes หรือ Docker Swarm ในการจัดการการ deploy container ช่วยให้การจัดการสภาพแวดล้อมและการขยายตัวของแอปพลิเคชันเป็นไปอย่างมีประสิทธิภาพและยืดหยุ่น
Containerization Deployment ช่วยให้การจัดการแอปพลิเคชันมีความเป็นมาตรฐาน สะดวก และง่ายต่อการปรับปรุงและบำรุงรักษา
แนะนำเนื้อหา
เตรียมเครื่อง Windows ของเราให้พร้อมพัฒนา Modern Application ด้วย WSL2 และ Docker Desktop
ฝึกวิชา Docker Image & Container