Hướng dẫn tạo website WordPress với Docker – Bài 13

Trong bài viết này, mình sẽ hướng dẫn cách tạo một website WordPress đơn giản bằng Docker, sử dụng hai cách: Docker runDocker Compose. Đừng lo nếu bạn là người mới, mình sẽ giải thích mọi thứ một cách dễ hiểu nhất nhé.

Xem thêm:

Cách tạo image từ Dockerfile – Bài 12

Hướng dẫn cài đặt Private Docker Registry – Bài 11

1. Mục Tiêu

Khi bạn muốn chạy một website WordPress, bạn cần 2 thứ:

  1. WordPress
  2. Database (MySQL) – nơi lưu trữ dữ liệu như bài viết, user…

=> Vậy nên mình sẽ tạo 2 container:

  • Một container chạy WordPress.
  • Một container chạy MySQL (làm database).

2. Hướng dẫn thực hiện

Cách 1: Dùng docker run để chạy thủ công từng container

Bước 1: Tạo Network Riêng

Docker mặc định không hỗ trợ DNS nội bộ (để container này gọi được container kia qua hostname), nên ta cần tạo network mới:

docker network create mywebsite

Bước 2: Chạy Container WordPress

docker run -d \
  --name web \
  --network mywebsite \
  -p 8080:80 \
  -e WORDPRESS_DB_HOST=db \
  -e WORDPRESS_DB_USER=mysql \
  -e WORDPRESS_DB_PASSWORD=admin123 \
  -e WORDPRESS_DB_NAME=wordpress \
  wordpress

Giải thích:

  • -p 8080:80: mở cổng truy cập web.
  • Các biến môi trường -e: cấu hình database cho WordPress.
  • --network mywebsite: giúp WordPress liên kết được với container database tên là db.

Bước 3: Chạy Container MySQL

docker run -d \
  --name db \
  --network mywebsite \
  -e MYSQL_DATABASE=wordpress \
  -e MYSQL_USER=mysql \
  -e MYSQL_PASSWORD=admin123 \
  -e MYSQL_ROOT_PASSWORD=admin123 \
  mysql:5.7

Chú ý:

  • Phải dùng đúng thông tin user, password, database name giống với bên WordPress.
  • Dùng mysql:5.7 vì đây là phiên bản tương thích tốt với WordPress.

Bước 4: Kiểm Tra

Mở trình duyệt và vào địa chỉ:

http://<IP-máy-bạn>:8080

Cách 2: Dùng Docker Compose

Tạo file docker-compose.yml như sau:

version: "3"
services:
  wordpress:
    image: wordpress
    ports:
      - "9999:80"
    networks:
      - mywebsite
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: mysql
      WORDPRESS_DB_PASSWORD: admin123
      WORDPRESS_DB_NAME: wordpress

  db:
    image: mysql:5.7
    networks:
      - mywebsite
    environment:
      MYSQL_DATABASE: wordpress
      MYSQL_USER: mysql
      MYSQL_PASSWORD: admin123
      MYSQL_ROOT_PASSWORD: admin123

networks:
  mywebsite:
    driver: bridge

Chạy lệnh:

docker compose up -d

Sau đó vào trình duyệt:

http://localhost:9999

Nguyễn Tiến Trường

Mình viết về những điều nhỏ nhặt trong cuộc sống, Viết về câu chuyện những ngày không có em