Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the wordpress-seo domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /var/www/vinascript/html/wp-includes/functions.php on line 6114
Hướng dẫn xây dựng môi trường phát triển WordPress sử dụng Docker với xdebug - VinaScript

Latest Post

Triển khai dự án PHP, Mysql với Nginx trên Docker Tìm hiểu về HTML – Ưu điểm, nhược điểm và cách hoạt động của HTML

Docker là công cụ mạnh mẽ giúp việc tạo môi trường phát triển WordPress trở nên đơn giản hơn bao giờ hết. Nó không chỉ đảm bảo sự đồng bộ giữa các môi trường chạy WordPress, mà còn giúp giảm thời gian phát triển và tối ưu hóa quá trình triển khai ứng dụng. Trong hướng dẫn này từ blog, chúng tôi sẽ hướng dẫn bạn cách xây dựng một môi trường phát triển WordPress sử dụng Docker kết hợp với PHP, Xdebug, và hệ quản trị cơ sở dữ liệu MySQL.

Hướng dẫn xây dựng môi trường WordPress sử dụng Docker

Đâu tiên mình build cấu trúc dự án WordPress bằng Docker như sau:

Trong đó thì:

  • source/thư mục chưa source code sau khi build docker
  • docker/docker-compose.yaml: là file config chứa kiến trúc WordPress Docker mà vinasupport.com sẽ xây dựng
  • docker/Dockerfile: file config chứa thông tin, các lệnh để build docker image
  • docker/configs/xdebug.ini: file setting của xdebug
  • README.md: là file hướng dẫn thứ tự build docker.

Bước 1: Tạo file docker/Dockerfile chưa thông tin, lệnh để build WordPress Docker

Để build image cho docker, mình dựa trên WordPress Docker Image chính chủ tại địa chỉ: https://hub.docker.com/_/wordpress

Tuy nhiên bản image này không chưa xdebug là một extension rất cần thiết để debug, gỡ lỗ cho các dự án về PHP và WordPress.

File Dockerfile sẽ chứa nội dung sau:

FROM wordpress:latest
# Install packages under Debian
RUN apt-get update && 
    apt-get -y install git telnet vim net-tools
# Install XDebug from source as described here:
# https://xdebug.org/docs/install
# Available branches of XDebug could be seen here:
# https://github.com/xdebug/xdebug/branches
RUN cd /tmp && 
    git clone https://github.com/xdebug/xdebug.git && 
    cd xdebug && 
    git checkout xdebug_3_2 && 
    phpize && 
    ./configure --enable-xdebug && 
    make && 
    make install && 
    rm -rf /tmp/xdebug
# Copy xdebug.ini to /usr/local/etc/php/conf.d/
COPY ./configs/xdebug.ini /usr/local/etc/php/conf.d/
# Since this Dockerfile extends the official Docker image `wordpress`,
# and since `wordpress`, in turn, extends the official Docker image `php`,
# the helper script docker-php-ext-enable (defined for image `php`)
# works here, and we can use it to enable xdebug:
RUN docker-php-ext-enable xdebug

Chú ý rằng file này sẽ build từ phiên bản image mới nhất của WordPress, nếu bạn muôn chỉ định phiên bản WordPress cần xây dựng thì vui lòng sửa thành

FROM wordpress:6.2.2-php8.1-apache

Trong file Dockerfile đã chứa lệnh cài xdebug, và kích hoạt xdebug. Bạn cần thực hiện tiếp bước 2 để  cầu hình xdebug.

Bước 2: Tạo file xdebug.ini

# Parameters description could be found here: https://xdebug.org/docs/remote
# Also, for PhpStorm, configuration tips could be found here: https://www.jetbrains.com/help/phpstorm/configuring-xdebug.html
zend_extension=xdebug.so
xdebug.mode=debug
# the default port for XDebug 3 is 9003, not 9000
xdebug.client_port=9004
# The line below is commented. This is the IP of your host machine, where your IDE is installed.
# We set this IP via XDEBUG_CONFIG environment variable in docker-compose.yml instead.
#xdebug.client_host=192.168.1.2

Ở đây, chúng ta sẽ đặt giá trị `xdebug.client_port=9004`, điều này có nghĩa là Xdebug sẽ lắng nghe qua cổng 9004. Mặc định, cổng lắng nghe là 9000 (đối với Xdebug 2) và 9003 (đối với Xdebug 3). Tuy nhiên, tôi muốn thay đổi cổng để tránh xung đột với các dự án khác đang sử dụng XAMPP, nên tôi chuyển sang cổng 9004.

Vì vậy ở Phần mềm IDE các bạn cần cấu hình để IDE có thể lắng nghe trên cổng 9004. VD với PHPStorm IDE:

Bước 3: Tạo file docker/docker-compose.yaml để tạo kiến trúc docker cho WordPress

Nội dung như sau của file docker-compose.yaml như sau:

version: '3.1'

services:

  vinasupport_web:
    container_name: vinasupport_web
    build: .
    restart: always
    ports:
      - "8888:80"
    environment:
      WORDPRESS_DB_HOST: vinasupport_mysql
      WORDPRESS_DB_USER: vinasupport
      WORDPRESS_DB_PASSWORD: 12345678
      WORDPRESS_DB_NAME: vinasupport
      WORDPRESS_DEBUG: 1
      # Set the XDEBUG_CONFIG as described here: https://xdebug.org/docs/remote
      # If you are using mac client_host = host.docker.internal
      XDEBUG_CONFIG: client_host=host.docker.internal
    volumes:
      - /opt/projects/visav4/source:/var/www/html
    depends_on:
      - vinasupport_mysql
    networks:
      - vinasupport_network
    extra_hosts:
      - "host.docker.internal:192.168.2.1"

  vinasupport_mysql:
    container_name: vinasupport_mysql
    image: mysql:5.7
    restart: always
    ports:
      - "3333:3306"
    environment:
      MYSQL_DATABASE: vinasupport
      MYSQL_USER: vinasupport
      MYSQL_PASSWORD: 12345678
      MYSQL_RANDOM_ROOT_PASSWORD: '1'
    volumes:
      - vinasupport_db:/var/lib/mysql
    networks:
      - vinasupport_network

# Create Network for vinasupport
networks:
  vinasupport_network:
    driver: bridge
    ipam:
      driver: default
      config:
        - subnet: "192.168.2.0/24"
          gateway: "192.168.2.1"

volumes:
  vinasupport_db:

Kiến trúc của chúng ta sẽ bao gồm:

  • Network vinasupport_network nằm trển dải mạng 192.168.0.0/24 và có default gateway là 192.168.0.1. Đây cũng chính là địa chỉ IP của máy Host là máy chúng ta đang cài phần mềm PHPStorm.
  • Volume vinasupport_db là ổ đĩa ảo chứa dữ liệu của MySQL Database
  • 2 container là:
    • vinasupport_web là container đang chạy web bằng WordPress trên cổng 8888 trên máy Host. Và source sẽ được lưu ở source/ trên máy Host
    • vinasupport_mysql là container đang chạy Hệ quản trị CSDL MySQL dữ liệu sẽ được lưu trên volume vinasupport_db

Hướng dẫn Build môi trường WordPress sử dụng Docker

Sau khi các file config đã được tạo xong thì chúng ta hãy dùng lệnh Linux hoặc Windows Shell cũng đc, cd vào thư mục docker/ của dự án và chậy lệnh dưới đây.

docker-composer up -d --build

Kết quả chúng ta được:

Bây giờ truy cập website qua địa chỉ http://localhost:8888 thử xem

Hướng dẫn Debug WordPress sử dụng Docker, xdebug, PHPStorm, Chrome

Đã hướng dẫn thì hướng dẫn cho chót, mình sẽ hướng dẫn các bạn debug WordPress với môi trường đã tạo ở trên. Mình dùng PHPstorm có bản quyền, nếu bạn sử dụng IDE khác thì không cần xem hướng dẫn bên dưới này.

Bước 1: Cài đặt chrome extension là Xdebug Helper: https://chrome.google.com/webstore/detail/xdebug-helper/eadndfjplgieldjbigjakmdgkmoaaaoc

Kich hoạt nó trên trình duyệt bằng cách chuyển nó sang trạng thái màu xanh!

Bước 2: Đặt chế độ listen cho PHPStorm

Bước 3: Đặt Break Point trên Source Code của WordPress

Bước 4: Vào trang web và refresh lại.

Bạn sẽ thấy tín hiệu debug được gửi tới PHPStorm => bấm [ Accept ] để chấp nhận tín hiệu.

Kết quả:

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *