Dockerizing WordPress: Step-by-Step with Docker Compose

Việc triển khai WordPress truyền thống thường khiến chúng ta đau đầu với sự sai khác giữa môi trường local và production. Để giải quyết triệt để vấn đề này, tôi luôn ưu tiên sử dụng wordpress docker compose. Đây là cách chuyên nghiệp nhất để quản lý vòng đời ứng dụng, từ việc chọn đúng wordpress docker image cho đến cấu hình hệ thống mạng và lưu trữ (volumes).

image 5

1. Tìm hiểu về WordPress Docker Image

Trước khi bắt tay vào viết code, bạn cần hiểu về “nguyên liệu” chính: wordpress docker image. Trên Docker Hub, có rất nhiều biến thể của image này:

  • Bản Apache (Mặc định): Dễ dùng, tích hợp sẵn Web Server.
  • Bản PHP-FPM: Nhẹ và hiệu suất cao hơn, nhưng cần một Web Server rời (như Nginx) để xử lý.
  • Bản Alpine: Dung lượng cực nhỏ (chỉ vài chục MB), tối ưu cho tốc độ kéo image và tiết kiệm bộ nhớ.

Kinh nghiệm của tôi: Để chạy Production năm 2026, hãy dùng bản php-fpm kết hợp với Nginx để tối ưu khả năng chịu tải.

2. Xây dựng stack với WordPress Docker Compose

File docker-compose.yml đóng vai trò là bản thiết kế cho toàn bộ hệ thống. Thay vì chạy từng container riêng lẻ, wordpress docker compose sẽ khởi tạo cả Database và Web App chỉ với một lệnh duy nhất.

Bước 1: Chuẩn bị file biến môi trường (.env)

Bảo mật là ưu tiên hàng đầu. Hãy tách các thông tin nhạy cảm ra khỏi file cấu hình chính.

Đoạn mã

# Database Config
MYSQL_ROOT_PASSWORD=super_secret_pwd
MYSQL_DATABASE=wp_production
MYSQL_USER=wp_user
MYSQL_PASSWORD=wp_pass

# WordPress Config
WORDPRESS_DB_HOST=db:3306

Bước 2: Viết file docker-compose.yml

Tại đây, tôi sẽ định nghĩa hai dịch vụ chính là db (MariaDB) và wordpress.

YAML

version: '3.8'

services:
  db:
    image: mariadb:10.11
    container_name: wordpress_db
    restart: always
    env_file: .env
    volumes:
      - db_data:/var/lib/mysql

  wordpress:
    depends_on:
      - db
    image: wordpress:6.4-php8.2-fpm # Sử dụng wordpress docker image bản fpm
    container_name: wordpress_app
    restart: always
    env_file: .env
    volumes:
      - ./wp-content:/var/www/html/wp-content # Mount riêng wp-content để dễ backup
    networks:
      - wp_network

networks:
  wp_network:

volumes:
  db_data:

3. Tối ưu hóa hiệu suất và bảo mật

Khi làm việc với wordpress docker image, đừng chỉ dừng lại ở việc “chạy được”. Hãy nâng cấp nó lên chuẩn Production:

  1. Sử dụng Read-Only Volumes: Đối với các file core của WordPress, bạn có thể mount dưới dạng ro (read-only) để hacker không thể sửa đổi file hệ thống nếu chẳng may chiếm được quyền container.
  2. Tự động cập nhật: Tôi thường dùng tool như Watchtower để tự động kiểm tra và kéo bản mới nhất của wordpress docker image mỗi khi có bản vá bảo mật từ nhà phát hành.
  3. Resource Limits: Giới hạn tài nguyên trong compose file để tránh tình trạng một site bị loop code làm treo toàn bộ server:YAMLdeploy: resources: limits: cpus: '0.50' memory: 512M

4. Khởi chạy và Kiểm tra

Sau khi đã hoàn thiện file cấu hình, hãy chạy lệnh thần thánh:

Bash

docker-compose up -d

Để kiểm tra xem wordpress docker image đã được tải về và chạy đúng chưa, bạn dùng lệnh:

docker ps

Kết luận

Việc làm chủ wordpress docker compose không chỉ giúp bạn deploy nhanh hơn mà còn giúp hệ thống của bạn trở nên bất tử trước những thay đổi về hạ tầng. Bạn có thể mang toàn bộ thư mục dự án này sang bất kỳ server nào khác và nó sẽ hoạt động chính xác 100%.

Viết một bình luận

Chỉ mục