ขึ้น WordPress อย่างรวดเร็วและง่ายดายด้วย Docker Compose
--
ทุกวันนี้อะไร ๆ ก็ต้อง Containerization อะเนอะ เพราะมันเร็วและง่ายมาก เขียน dockerfile หรือ docker-compose.yml ครั้งเดียวก็เอาไปรันที่ไหนก็ได้ จะบน local machine หรือบน vps อย่าง digitalocean droplet ก็ได้ config เหมือน ๆ กัน ไม่ต้องปวดหัวกับประเด็น เครื่องผมรันได้ ทำไมบนเซิฟเวอร์รันไม่ได้
และวันนี้เราก็จะมาสร้าง Wordpress ด้วยเทคนิก Dockerization ที่ว่านี่แหละ เนื่องจาก Wordpress เองก็รันอยู่บนเทคโนโลยีหลาย ๆ ตัว ดังนั้นเราจึงจะใช้ท่า Docker-compose กัน จะได้จัดการเรื่อง docker network ได้ง่าย ๆ (เรียกว่าไม่ต้องจัดการง่ายกว่า) เอาล่ะ มาลุยกันเลย
สำหรับมือใหม่ที่ยังไม่รู้จัก Docker
อ่านบทความนี้ก่อนนะครับ — บันทึกนักพัฒนา: Docker Container 101 แล้วเราจะคิดถึงนายนะ WAMP, XAMPP, … — Siwawes Wongcharoen
ก่อนอื่นติดตั้ง docker กันก่อนนะครับ
[Docker-101#1] เริ่มหัดใช้ Docker บน Windows 10 แบบง่ายๆ ได้ยังไง? — Supachai Jaturaprom
ติดตั้ง Docker ฉบับโหลดปั๊ปเปิดปุ๊ป!! — Thepnatee Phojan
จากนั้นสร้าง directory/folder สำหรับเก็บ asset ต่าง ๆ ที่จะเอาไว้ใช้พัฒนา wordpress แล้วเขียนไฟล์ docker-compose.yml ไว้ในนั้นเลย แล้ว copy code ด้านล่างนี้ไปใส่
version: "3.3"services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpresswordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
volumes:
db_data: {}
จากนั้นรันคำสั่ง docker-compose up -d
เพื่อรัน docker ตาม config ของ docker-compose.yml ซึ่งหากยังไม่เคยโหลด image ของ wordpress หรือ mysql อาจจะต้องรอสักพัก
จากนั้นเปิด Browser ขึ้นมาแล้วไปที่ localhost:8000 กันเล้ย
แถ่นแท๊นนนนนน ได้ Wordpress site มาแล้ว 1 site อย่างง่าย แค่ก๊อปโค้ดไฟล์เดียวแล้วก็รัน command เดียวก็ได้เวิร์ดเพรสไว้ใช้งานเลย สุดยอดมั้ยล่ะ อิอิ
ทีนี้เรามาดู docker-compose.yml กันดีกว่า ว่าแต่ละ tag มันคืออะไรยังไงบ้าง (คร่าว ๆ พอ)
services: บอกว่า docker-compose file นี้จะมีเซอร์วิสอะไรรันบ้างdb: และ wordpress: คือชื่อเซอร์วิสที่เราจะรัน จะเริ่ม config หลังจากนี้image: wordpress:latest บอก docker ว่าเซอร์วิสนี้จะใช้ image อะไรรัน หลัง : คือ tag ของ image นั้นๆ ใช้สำหรับระบุเวอร์ชันของ image ในที่นี้ใช้เวอร์ชั่นล่าสุดports: - "8000:80" ให้ docker ทำการ expose port 80 ของ container ออกมาเป็น port 8000 ของ machine (ให้เราสามารถเข้าถึง application ที่รันอยู่ภายใน container ได้)
เพียงเท่านี้ เราก็จะสามารถนำไฟล์ docker-compose.yml ไปรันที่ไหนก็ได้ที่มี docker engine และ docker-compose ได้ทั้ง reliability, agility และ compatibility
อันนี้เป็นเพียงตัวอย่างแบบง่าย ๆ เท่านั้น ในการใช้งานจริง ๆ อาจจะต้องมีการปรับแต่งนู่นนี่นั่น เช่น อยากใช้ FastCGI ก็อาจจะต้องเปลี่ยนไปใช้ wordpress:php-fpm แล้วเพิ่ม reverse proxy เพื่อมารับ load แล้ว proxy ไปยัง wordpress อีกทีนึง อะไรประมานนี้ ไว้มีโอกาสจะมาแสดงตัวอย่างให้ดูกันครับ
References
— Official Docs: Quickstart: Compose and WordPress
ขออนุญาตแปะ Affiliate ครับ อิอิ 😄