มาติดตั้งและใช้งาน Drupal 10 บน Docker กัน

DevOps

มาติดตั้งและใช้งาน Drupal 10 บน Docker กัน

เพียงไม่กี่คำสั่ง เราก็สามารถใช้งาน Drupal 10 บน Docker ได้แล้ว มาดูวิธีการติดตั้งในบทความนี้กันเลย

มากกว่า 1 ปีที่ผ่านมา

2 min read

😎 What is Drupal?

อธิบายนิดนึงเผื่อใครไม่รู้จัก Drupal มาก่อน Drupal ก็เป็น CMS ตัวนึง ที่อาจจะไม่ค่อยนิยมมากนักถ้าเทียบกับ Wordpress แต่ข้อดีคือขึ้นชื่อเรื่องการ Customize ที่สูงกว่า Wordpress มาก และมีคนพัฒนา Plugin มากกว่า Wordpress ด้วย แต่ข้อเสียก็คือ มันจะมีคนพัฒนา Plugin มาก แต่มีคนใช้น้อยกว่า Wordpress ทำให้มี Plugin ที่เป็น Malware มากกว่า Wordpress ด้วย

ผมขอข้ามการติดตั้ง Docker ไปเลยนะครับ เพราะคิดว่าน่าจะหาวิธีการติดตั้งกันได้ไม่ยาก เราไปลุย Drupal กันเลยดีกว่า

🛜 Create Network

เริ่มจากสร้าง network กันก่อน โดยใช้คำสั่ง docker network create ดังนี้

docker network create drupal

🏃 RUN

Drupal

ต่อมาเราก็จะมาสร้าง Container สำหรับ Drupal กัน โดยวิธีการติดตั้งแบบแรก จะใช้ docker run แล้วกำหนดค่าต่างๆ ตามนี้

docker run --name drupal-10 -p 8080:80 -d --network drupal drupal:latest

อธิบายแต่ละค่ากันหน่อย

  • --name drupal-10 คือ ชื่อของ container
  • -p 8080:80 คือ กำหนด port ให้ container โดย 8080 คือ port ของเครื่อง Host ก็คือเครื่องเราเอง และ 80 คือ port ของ container
  • -d คือ ให้ container ทำงานแบบ detached mode หรือทำงานแบบ background
  • --network drupal คือ ให้ container อยู่ใน network ที่ชื่อว่า drupal
  • drupal:latest คือ ให้ใช้ image ที่ชื่อว่า drupal และเวอร์ชั่น latest

Database

สำหรับ Database ก็จะใช้ MariaDB เวอร์ชั่น 11.0 นะครับ โดยใช้คำสั่ง docker run ดังนี้

docker run -d --name drupal-db --network drupal \
	-e MYSQL_DATABASE=drupal \
	-e MYSQL_USER=user \
	-e MYSQL_PASSWORD=password \
	-e MYSQL_ROOT_PASSWORD=password \
mariadb:11.0

อธิบายแต่ละค่ากันหน่อย

  • -d คือ ให้ container ทำงานแบบ detached mode หรือทำงานแบบ background
  • --name drupal-db คือ ชื่อของ container
  • --network drupal คือ ให้ container อยู่ใน network ที่ชื่อว่า drupal
  • -e MYSQL_DATABASE=drupal คือ กำหนดชื่อ environment variable ที่ชื่อว่า MYSQL_DATABASE ให้มีค่าเป็น drupal
  • -e MYSQL_USER=user คือ กำหนดชื่อ environment variable ที่ชื่อว่า MYSQL_USER ให้มีค่าเป็น user
  • -e MYSQL_PASSWORD=password คือ กำหนดชื่อ environment variable ที่ชื่อว่า MYSQL_PASSWORD ให้มีค่าเป็น password
  • -e MYSQL_ROOT_PASSWORD=password คือ กำหนดชื่อ environment variable ที่ชื่อว่า MYSQL_ROOT_PASSWORD ให้มีค่าเป็น password
  • mariadb:11.0 คือ ให้ใช้ image ที่ชื่อว่า mariadb และเวอร์ชั่น 11.0

User และ Password สามารถกำหนดได้ตามใจชอบเลย แต่ต้องจำไว้ว่าต้องตรงกับที่เรากำหนดในขั้นตอนการติดตั้ง Drupal ด้วย

📄 Docker Compose

หรือถ้าใครอยากเขียนเป็นแบบ docker compose ก็สามารถเขียนได้ดังนี้

version: "3.8"
services:
  drupal:
    image: drupal:latest
    container_name: drupal-10
    ports:
      - "8080:80"
    networks:
      - drupal
 
  drupal-db:
    image: mariadb:11.0
    container_name: drupal-db
    environment:
      MYSQL_DATABASE: drupal
      MYSQL_USER: user
      MYSQL_PASSWORD: password
      MYSQL_ROOT_PASSWORD: password
    networks:
      - drupal
 
networks:
  drupal:
    driver: bridge

จากนั้นก็รันคำสั่ง docker-compose up -d ได้เลย

docker ps
docker ps

จากนั้นเราก็ docker ps ดู ก็จะเห็น container ที่เราสร้างขึ้นมา 2 ตัว คือ drupal-10 และ drupal-db นั่นเอง ซึ่งก็พร้อมสำหรับการติดตั้ง Drupal ละ ขั้นตอนต่อไปเราก็จะมาเริ่มติดตั้ง Drupal กัน

😎 Setup Drupal

ขั้นแรกเราก็เปิด Browser ขึ้นมาแล้วไปที่ localhost:8080 ก็จะเจอหน้าต้อนรับของ Drupal แบบนี้ จากนั้นก็เลือกภาษาที่เราต้องการจะใช้ในการติดตั้ง

Choose language
Choose language

ต่อมาก็ทำการตั้งค่า Database ตามนี้

  • Database type: MySQL, MariaDB, Percona Server, or equivalent
  • Database name: drupal
  • Database username: user
  • Database password: password
Set up database
Set up database

ในส่วนของ Advanced options

  • Host: drupal-db
  • Port: 3306

จากนั้นก็กด Save and continue ไปได้เลย

Set up database: Advanced options
Set up database: Advanced options

ถ้าไม่มีอะไรผิดพลาดก็จะขึ้นหน้าจอกำลังติดตั้ง Drupal แบบนี้

Installing Drupal
Installing Drupal

ขั้นตอนต่อไปก็จะเป็นการตั้งค่าเว็บไซต์ละ โดยในส่วนของ Site Information จะมีข้อมูลดังนี้

  • Site name: คือชื่อเว็บไซต์ ใส่ไปตามใจชอบเลย
  • Site email address: คืออีเมลสำหรับใช้งานของเว็บไซต์
Configure site: Site Information
Configure site: Site Information

ต่อมาก็จะเป็น Site Maintenance Account ซึ่งเป็นข้อมูลสำหรับเข้าใช้งานเว็บไซต์ โดยมีข้อมูลดังนี้

  • Username: ชื่อผู้ใช้งาน
  • Password: รหัสผ่าน
  • Confirm password: ยืนยันรหัสผ่าน
  • Email address: อีเมลสำหรับใช้งานของผู้ใช้งาน
Configure site: Site Maintenance Account
Configure site: Site Maintenance Account

ต่อมาก็เป็น Regional Settings ซึ่งเป็นการตั้งค่าภาษา และเขตเวลาของเว็บไซต์ โดยมีข้อมูลดังนี้

  • Default country: ประเทศ แน่นอนก็เป็นประเทศไทย 🇹🇭
  • Default time zone: เขตเวลา ก็เป็น Asia/Bangkok

ส่วน Notification settings ผมจะติ๊กถูกออกทั้งหมดเลย จากนั้นก็กด Save and continue ไปได้เลย

Configure site: Regional Settings
Configure site: Regional Settings

เราก็จะเจอหน้าจอแบบนี้ แสดงว่าเราติดตั้ง Drupal เสร็จสิ้นแล้ว

Congratulations! You installed Drupal! 🎉
Congratulations! You installed Drupal! 🎉

ถ้าลองเข้ามาดูในส่วนของ General System Information ก็จะเจอรายละเอียดต่างๆ ของเว็บไซต์ที่เราติดตั้งไว้

General System Information
General System Information

เพียงเท่านี้เราก็สามารถใช้งาน Drupal ได้แล้ว ที่นี้ถ้าอยากไปปรับแต่งอย่างไรก็สามารถทำได้ตามใจชอบเลย

Tags:

Drupal Docker