ติดตั้ง Wordpress ด้วย Docker ตอนที่ 1

Saracha Tongkumpunt
2 min readApr 11, 2021

--

Photo by PEYNE François on Unsplash

ผมได้ลองติดตั้ง Wordpress เองโดยสร้าง LEMP Stack บน Docker จากบทความนี้ แต่พบว่าแพ็คเกจบางตัวก็ไม่มีอยู่แล้ว หรือมีการเปลี่ยนเวอร์ชั่น (บทความเขียนมา 4 ปีครึ่งแล้ว) พอแก้ไปแก้มาอยู่พักใหญ่จนติดตั้งสำเร็จ ก็นึกได้ว่า Wordpress ก็มี Official Docker Image นี่นา! จะมานั่งปวดหัวลง Package เองไปทำไมละนี่

ต่อจากนี้จะพูดถึงการติดตั้ง Wordpress ด้วย Official Docker Image ที่ Web server เป็น Apache ก่อน
โดยจะ map volume ./wordpress ไว้ที่ที่เก็บตัว wordpress ไว้ จะได้จัดการได้สะดวก ส่วน ./db/data และ ./log/mysql จะเป็นที่ที่เก็บไฟล์ของฐานข้อมูล และ log ตามลำดับ
ทั้งนี้ถ้าไม่ได้จะทำอะไรกับไฟล์ฐานข้อมูล หรือ log ก็ไม่ต้อง map volume ไว้ก็ได้

ส่วน Docker-compose file ตามด้านล่างครับ ตัวอย่างนี้จะใช้ MariaDB 10.5
อย่างไรก็ตาม จะเปลี่ยนเป็น MySQL ก็ทำได้ครับ คอนฟิกเหมือนเดิม

อย่าลืมเปลี่ยน DB_NAME, DB_USERNAME, DB_PASSWORD ให้ตรงกันทั้ง 2 ชุดด้วยนะครับ ส่วน WORDPRESS_CONTAINER_NAME กับ DB_CONTAINER_NAME ควรเปลี่ยนไม่ให้ซ้ำกับ Docker container อื่น ๆ บนเครื่อง

ไปที่ที่เราสร้างไฟล์ docker-compose.yml นี้ไว้ แล้วสร้าง containers ด้วยคำสั่ง

docker-compose up -d --build

ใช้คำสั่ง docker ps จะเห็นว่ามี container ทำงาน 2 ตัว คือ Wordpress กับ Database

containers ทำงาน 2 ตัว

จากนั้นให้เปิดเบราว์เซอร์แล้วเข้าไปที่ localhost แล้วจะ redirect มาหน้า localhost/wp-admin/install.php
จากนั้นให้ติดตั้ง Wordpress โดยไม่ต้องตั้งค่าของฐานข้อมูลอีกแล้ว เนื่องจาก Wordpress จะใช้ค่าจาก Docker-compose.yml นั่นเอง

หน้าเริ่มต้นติดตั้ง Wordpress

สุดท้าย ถ้าใครต้องการนำเว็ป Wordpress เดิมมาลง ให้นำไฟล์มาใส่ใน ./wordpress แต่ไม่แนะนำให้ก็อปวางทับหมดนะ หลัก ๆ จะเป็น ./wordpress/uploads ที่มักเป็นรูป
และ ./wordpress/wp-content/ ที่มักเป็น plugins กับ themes มากกว่า

จากนั้นให้ import ไฟล์ฐานข้อมูล .sql ที่เคย dump ไว้ (ในตัวอย่างไฟล์ชื่อว่า database.sql) ด้วยคำสั่ง

docker exec -i DB_CONTAINER_NAME mysql -u’DB_USERNAME’ -p’DB_PASSWORDDB_NAME < database.sql

ทั้งนี้อย่าลืมเปิดไฟล์ .sql ด้วย text editor ขึ้นมาดูก่อนว่าเรารู้ username และ password ของ Wordpress ในฐานข้อมูลนั้นไหม ถ้าไม่ ให้ลบออกไปก่อน เดี๋ยวจะเข้าหน้า admin ไม่ได้ต้องมาทำใหม่อีกรอบ

ตอนต่อไปจะมาเซ็ตอัพแบบใช้ Nginx แทน Apache ร่วมกับ Wordpress docker image แบบ PHP FPM กัน

--

--