เปิดตำรา deploy WordPress ด้วย Docker (ภาคจบ)
April 26, 2023
bookmarkบทความ
sellDocker, Wordpress

ในภาคต้น ผมได้อธิบายสาเหตุที่ทำให้ผมคิดที่จะ deploy Wordpress ด้วย Docker ไปแล้ว ในบทความนี้ ผมจะมาอธิบายขั้นตอนในการ deploy และอีกเช่นเคย ถ้าเพื่อนๆ อ่านหัวข้อแล้วไม่เก็ต อนุญาตให้ผ่านบทความนี้ไปได้นะครับ 😑
Stateless Instance
ธรรมชาติของ Wordpress เป็นแอปพลิเคชั่นแบบ Stateful ครับ เพราะมีการเก็บไฟล์มีเดียต่างๆ เช่น รูปภาพ ไว้ภายในตัวแอปเอง ทุกครั้งที่เรา deploy ไฟล์เหล่านี้ก็จะหายไปทำให้เมื่อถูกเรียกมาแสดงก็จะหาไม่เจอและกลายเป็น 404 ไป 😣
ดังนั้นขั้นแรกผมขอนำเสนอปลั๊กอินที่จำเป็นและแนะนำในการทำให้เว็บไซต์ Wordpress ของเรากลายเป็น Stateless เสียก่อน
- WP Offload Media (จำเป็น) - โยนไฟล์ขึ้น S3 หรือ Google Cloud Storage ไปให้หมด ทีนี้จะ deploy กี่ครั้ง ไฟล์มีเดียในเว็บไซต์ของเราก็ไม่หายไปไหน
- UpdraftPlus (แนะนำ) - สำรองไฟล์และฐานข้อมูลขึ้น S3 ทุกวัน โดนเจาะเมื่อไหร่ rollback ทันที
ขั้นตอนนี้ ถ้าเป็นเว็บไซต์ใหม่ (greenfield) ก็คงไม่วุ่นวายนัก แต่ถ้าเป็นเว็บไซต์ที่มีข้อมูลอยู่แล้ว (brownfield) ก็ต้องมีการย้าย (migrate) ข้อมูลเดิมไปไว้บนคลาวด์ให้เรียบร้อยก่อนครับ
WP-CLI
รู้ไหมครับว่าเราสามารถติดตั้ง Wordpress, ธีม, และปลั๊กอินผ่าน command line ได้ ซึ่งพระเอกในงานนี้คือเครื่องมือที่ชื่อ WP-CLI นั่นเองครับ
คำสั่งของ WP-CLI มีเยอะมาก ลองศึกษาข้อมูลเพิ่มเติมได้ ที่นี่ ครับ คำสั่งที่เราจะใช้ในการ deploy มีดังนี้
- core - ใช้จัดการตัว Wordpress โดยตรง คำสั่งย่อยที่ใช้คือ download / config / install
- plugin - ใช้จัดการปลั๊กอิน คำสั่งย่อยที่ใช้คือ install / activate
- theme - ใช้จัดการธีม คำสั่งย่อยที่ใช้คือ install / activate
Docker
อ่านมาถึงตรงนี้ เชื่อว่าเพื่อนๆ คงรู้จัก Docker กันอยู่แล้วใช่ไหมครับ (เราเตือนคุณแต่แรกแล้วนะ 😏) และแน่นอนว่าการ deploy ก็ต้องใช้ Dockerfile ซึ่งผมได้เตรียมโปรเจคตัวอย่างไว้ให้ ที่นี่ แล้วครับ
อธิบายคร่าวๆ นะครับ เราใช้ image ของ gyengus ซึ่งมี Alpine Linux เป็น base และ install package ที่ยังขาดลงไป จากนั้นดาวน์โหลด WP-CLI แล้วก็ install ตัว Wordpress, ปลั๊กอิน, และธีมลงไปตามลำดับครับ
หมายเหตุ เราเลือกใช้ image ของ gyengus เพื่อความสะดวกในเดโมเท่านั้น (ขอขอบคุณมา ณ ที่นี้) ส่วน production จริง โปรเกมมิ่งใช้ image ที่เราสร้างขึ้นมาเองครับ 😎
เมื่อเรา build และ run ก็จะได้ผลลัพธ์เป็นเว็บไซต์หน้าตาประมาณนี้ครับ

เรียบร้อย ที่นี้ถามว่าเว็บไซต์เราจะโดนเจาะยากขึ้นไหม... ตอบได้เลยครับว่า ไม่ เว็บไซต์ของเรายังคงโดนเจาะได้เหมือนเดิม แต่มันกลายเป็นนกฟินิกซ์ที่สามารถคืนชีพได้จากเถ้าถ่านแล้วนั่นเอง

⚠ ถ้าเราต้องการลงธีมหรือปลั๊กอินเพิ่ม ต้องไปแก้ที่ไฟล์ Dockerfile แล้ว build ใหม่ เพราะการลงผ่าน dashboard จะไม่มีผลถาวร
ถ้าอยากดูตัวอย่างเว็บไซต์ที่ deploy ด้วย Docker หละก็ ไม่ต้องไปหาที่ไหนไกลครับ เว็บไซต์ progaming.co.th ของเรานี่แหละครับ ใช้วิธีตามที่กล่าวมาในบทความชุดนี้ 😁
จบแล้วครับสำหรับบทความที่ Geek สุดๆ ชุดนี้ อ่านแล้วชอบก็ฝากแชร์ ฝากไลค์กันด้วย หรือถ้าใครมีความเห็นหรือข้อแนะนำอย่างไรก็ฝากข้อความไว้ในคอมเมนต์ด้านล่างได้เลยครับ

กลับหน้ารวม