เปิดตำรา deploy WordPress ด้วย Docker (ภาคจบ)

เรื่องเด่น, บทความ

ในภาคต้น ผมได้อธิบายสาเหตุที่ทำให้ผมคิดที่จะ 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 สุดๆ ชุดนี้ อ่านแล้วชอบก็ฝากแชร์ ฝากไลค์กันด้วย หรือถ้าใครมีความเห็นหรือข้อแนะนำอย่างไรก็ฝากข้อความไว้ในคอมเมนต์ด้านล่างได้เลยครับ

, ,

บทความที่เกี่ยวข้อง

Menu