hocvietcode.com
  • Trang chủ
  • Học lập trình
    • Lập trình C/C++
    • Lập trình HTML
    • Lập trình Javascript
      • Javascript cơ bản
      • ReactJS framework
      • AngularJS framework
      • Typescript cơ bản
      • Angular
    • Lập trình Mobile
      • Lập Trình Dart Cơ Bản
        • Dart Flutter Framework
    • Cơ sở dữ liệu
      • MySQL – MariaDB
      • Micrsoft SQL Server
      • Extensible Markup Language (XML)
      • JSON
    • Lập trình PHP
      • Lập trình PHP cơ bản
      • Laravel Framework
    • Lập trình Java
      • Java Cơ bản
    • Cấu trúc dữ liệu và giải thuật
    • Lập Trình C# Cơ Bản
    • Machine Learning
  • WORDPRESS
    • WordPress cơ bản
    • WordPress nâng cao
    • Chia sẻ WordPress
  • Kiến thức hệ thống
    • Microsoft Azure
    • Docker
    • Linux
  • Chia sẻ IT
    • Tin học văn phòng
      • Microsoft Word
      • Microsoft Excel
    • Marketing
      • Google Adwords
      • Facebook Ads
      • Kiến thức khác
    • Chia sẻ phần mềm
    • Review công nghệ
    • Công cụ – tiện ích
      • Kiểm tra bàn phím online
      • Kiểm tra webcam online
Đăng nhập
  • Đăng nhập / Đăng ký

Please enter key search to display results.

Home
  • Docker
  • Lập trình Wordpress
Hướng dẫn tạo Docker Container mã nguồn WordPress qua docker-file và docker compose

Hướng dẫn tạo Docker Container mã nguồn WordPress qua docker-file và docker compose

  • 08-01-2025
  • Toanngo92
  • 1 Comment

Như các bạn đã biết, wordpress có thể tiến hành cài đặt và sử dụng qua các môi trường cục bộ như XAMPP hay Laragon, ở bài viết này, chúng ta sẽ cùng tìm hiểu cách tạo môi trường Docker để có thể khởi chạy ứng dụng wordpress phù hợp chỉ thông qua 2 tệp dockerfile và docker-compose

Mục lục

  • Bước 1: tạo tệp dockerfile
    • 1. FROM wordpress:latest
    • 2. ENV WORDPRESS_DB_HOST=db:3306
    • 3. ENV WORDPRESS_DB_USER=root
    • 4. ENV WORDPRESS_DB_PASSWORD=abcd@1234
    • 5. ENV WORDPRESS_DB_NAME=abcd@1234
    • 6. RUN apt-get update && apt-get install -y …
    • 7. RUN chown -R www-data:www-data /var/www/html
    • 8. EXPOSE 80
    • 9. ENTRYPOINT [“docker-entrypoint.sh”]
    • 10. CMD [“apache2-foreground”]
    • Tổng kết:
  • Bước 2: Tạo tệp docker-compose.yml
    • 1. version: '3.8'
    • 2. services
    • 3. Dịch vụ wordpress
      • a) build: .
      • b) ports: "8080:80"
      • c) environment
      • d) volumes: ./project:/var/www/html
      • e) depends_on: - db
    • 4. Dịch vụ db
      • a) image: mariadb:10.5
      • b) environment
      • c) volumes: db_data:/var/lib/mysql
    • 5. volumes
    • Tóm tắt hoạt động
    • Lưu ý
  • Bước 3: build & start docker
  • Bước 4: truy cập website thông qua cổng 8080

Bước 1: tạo tệp dockerfile

FROM wordpress:latest

ENV WORDPRESS_DB_HOST=db:3306
ENV WORDPRESS_DB_USER=root
ENV WORDPRESS_DB_PASSWORD=abcd@1234
ENV WORDPRESS_DB_NAME=database_name

RUN apt-get update && apt-get install -y \
    libpng-dev \
    libjpeg-dev \
    libfreetype6-dev \
    && docker-php-ext-configure gd --with-freetype --with-jpeg \
    && docker-php-ext-install gd

RUN chown -R www-data:www-data /var/www/html

EXPOSE 80

ENTRYPOINT ["docker-entrypoint.sh"]
CMD ["apache2-foreground"]

Trong đó:

1. FROM wordpress:latest

  • Chức năng: Chỉ định image nền (base image) sẽ được sử dụng để tạo container. Ở đây, image wordpress:latest được sử dụng, nghĩa là phiên bản WordPress mới nhất.

2. ENV WORDPRESS_DB_HOST=db:3306

  • Chức năng: Đặt biến môi trường WORDPRESS_DB_HOST để chỉ định địa chỉ host của cơ sở dữ liệu (database).
  • Ở đây db:3306 chỉ định một container có tên db đang chạy MySQL hoặc MariaDB trên cổng 3306.

3. ENV WORDPRESS_DB_USER=root

  • Chức năng: Đặt biến môi trường WORDPRESS_DB_USER, nghĩa là container WordPress sẽ dùng tài khoản root để kết nối với database.

4. ENV WORDPRESS_DB_PASSWORD=abcd@1234

  • Chức năng: Đặt mật khẩu cho tài khoản database được sử dụng bởi WordPress.

5. ENV WORDPRESS_DB_NAME=abcd@1234

  • Chức năng: Chỉ định tên database (abcd@1234) mà WordPress sẽ kết nối. Lưu ý: Tên database nên tránh sử dụng ký tự đặc biệt như @ vì có thể gây lỗi.

6. RUN apt-get update && apt-get install -y …

  • Chức năng:
    1. apt-get update: Cập nhật danh sách gói trong hệ thống.
    2. apt-get install -y: Cài đặt các thư viện cần thiết cho xử lý đồ họa trong WordPress:
      • libpng-dev: Hỗ trợ xử lý hình ảnh định dạng PNG.
      • libjpeg-dev: Hỗ trợ xử lý hình ảnh định dạng JPEG.
      • libfreetype6-dev: Hỗ trợ xử lý font chữ TrueType.
    3. docker-php-ext-configure gd –with-freetype –with-jpeg: Cấu hình extension gd để hỗ trợ hình ảnh.
    4. docker-php-ext-install gd: Cài đặt extension gd sau khi đã cấu hình.

7. RUN chown -R www-data:www-data /var/www/html

  • Chức năng: Đổi quyền sở hữu thư mục chứa mã nguồn WordPress (/var/www/html) sang người dùng www-data (người dùng mặc định của Apache). Điều này giúp Apache có quyền đọc/ghi dữ liệu tại đây.

8. EXPOSE 80

  • Chức năng: Khai báo cổng 80 (cổng HTTP mặc định) mà container sẽ lắng nghe để phục vụ web.

9. ENTRYPOINT [“docker-entrypoint.sh”]

  • Chức năng: Đặt tập lệnh mặc định được thực thi khi container khởi chạy. Tập lệnh này thiết lập môi trường WordPress.

10. CMD [“apache2-foreground”]

  • Chức năng: Đặt lệnh mặc định là chạy Apache trong chế độ foreground (không chạy ngầm). Điều này giúp container không bị tắt ngay lập tức sau khi khởi chạy.

Tổng kết:

Tệp Dockerfile này:

  • Sử dụng image WordPress mặc định.
  • Cấu hình môi trường kết nối với database.
  • Cài đặt các thư viện cần thiết để xử lý hình ảnh.
  • Thiết lập quyền thư mục và cấu hình container để chạy WordPress qua Apache.

Bạn cần đảm bảo rằng:

  1. Container database (ví dụ MySQL/MariaDB) đã được thiết lập và có tên db.
  2. Các giá trị như WORDPRESS_DB_PASSWORD và WORDPRESS_DB_NAME phải đúng để tránh lỗi kết nối.

Bước 2: Tạo tệp docker-compose.yml

version: '3.8'

services:
  wordpress:
    build: .
    ports:
      - "8080:80"
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: root
      WORDPRESS_DB_PASSWORD: abcd@1234
      WORDPRESS_DB_NAME: wordpress
    volumes:
      - ./project:/var/www/html
    depends_on:
      - db

  db:
    image: mariadb:10.5
    environment:
      MYSQL_ROOT_PASSWORD: abcd@1234
      MYSQL_DATABASE: wordpress
    volumes:
      - db_data:/var/lib/mysql
      - ./sql:/docker-entrypoint-initdb.d

volumes:
  db_data:

Đây là tệp Docker Compose sử dụng phiên bản 3.8, giúp bạn định nghĩa và quản lý các container cần thiết cho một ứng dụng WordPress. Dưới đây là giải thích chi tiết:

1. version: '3.8'

  • Chức năng: Chỉ định phiên bản của Docker Compose được sử dụng. Phiên bản 3.8 hỗ trợ nhiều tính năng mới và tương thích tốt với Docker Engine hiện đại.

2. services

  • Chức năng: Khai báo các dịch vụ (services) sẽ chạy trong môi trường Docker Compose. Trong trường hợp này, có 2 dịch vụ:
    • wordpress: Chạy WordPress.
    • db: Chạy cơ sở dữ liệu MariaDB.

3. Dịch vụ wordpress

a) build: .

  • Chức năng: Xây dựng image từ tệp Dockerfile nằm trong thư mục hiện tại (.).

b) ports: "8080:80"

  • Chức năng: Ánh xạ (map) cổng 80 trong container WordPress sang cổng 8080 trên máy chủ.
    • Bạn có thể truy cập WordPress bằng http://localhost:8080.

c) environment

  • Chức năng: Định nghĩa các biến môi trường được truyền vào container WordPress:
    • WORDPRESS_DB_HOST: Địa chỉ host của database (db:3306).
    • WORDPRESS_DB_USER: Tài khoản database (root).
    • WORDPRESS_DB_PASSWORD: Mật khẩu của database (abcd@1234).
    • WORDPRESS_DB_NAME: Tên database sẽ được sử dụng (wordpress).

d) volumes: ./project:/var/www/html

  • Chức năng: Liên kết thư mục trên máy chủ (./project) với thư mục trong container (/var/www/html).
    • Tất cả dữ liệu trong thư mục ./project sẽ được đồng bộ vào thư mục WordPress trong container.

e) depends_on: - db

  • Chức năng: Đảm bảo dịch vụ wordpress chỉ được khởi chạy sau khi dịch vụ db (MariaDB) đã sẵn sàng.

4. Dịch vụ db

a) image: mariadb:10.5

  • Chức năng: Sử dụng image mariadb:10.5 để chạy database MariaDB.

b) environment

  • Chức năng: Thiết lập biến môi trường cho MariaDB:
    • MYSQL_ROOT_PASSWORD: Mật khẩu của tài khoản root trong MariaDB.
    • MYSQL_DATABASE: Tự động tạo một database có tên wordpress khi container được khởi động lần đầu.

c) volumes: db_data:/var/lib/mysql

  • Chức năng:
    • Tạo volume tên db_data trên máy chủ và ánh xạ với thư mục /var/lib/mysql trong container.
    • Dữ liệu database sẽ được lưu trữ trong volume này, giúp dữ liệu không bị mất khi container MariaDB bị xóa.

5. volumes

  • Chức năng: Định nghĩa các volume được sử dụng trong project:
    • db_data: Volume này lưu trữ dữ liệu database của MariaDB (được ánh xạ từ /var/lib/mysql).

Tóm tắt hoạt động

  • Dịch vụ WordPress phụ thuộc vào MariaDB để hoạt động.
  • Khi chạy lệnh docker-compose up, hai container sẽ được khởi động:
    1. Container db:
      • Chạy MariaDB với database tên wordpress.
      • Lưu trữ dữ liệu trong volume db_data.
    2. Container wordpress:
      • Kết nối với database MariaDB.
      • Dữ liệu mã nguồn WordPress được đồng bộ từ thư mục ./project.
      • Website có thể được truy cập qua http://localhost:8080.

Lưu ý

  • Bảo mật: Mật khẩu abcd@1234 là ví dụ minh họa và nên thay thế bằng mật khẩu phức tạp hơn khi triển khai thực tế.
  • Kiểm tra thư mục ./project: Nếu không có nội dung WordPress trong thư mục này, container có thể không hoạt động đúng.

Bước 3: build & start docker

docker-compose up -d

Bước 4: truy cập website thông qua cổng 8080

http://localhost:8080

Bài viết liên quan:

Hướng dẫn tự cài đặt n8n comunity trên CyberPanel, trỏ tên miền
Lệnh docker-compose và chạy các dịch vụ docker
Giám sát, theo dõi lịch sử/trạng thái container
Khái niệm Network Bridge trong Docker và cách kết nối các container cùng phục vụ
Chia sẻ dữ liệu giữa máy chủ Host, các Container trong Docker
Lưu container thành image file, tạo container từ image cục bộ
Khái niệm container, image trong docker
Giới thiệu docker và hướng dẫn cài đặt docker
Hướng dẫn cài đặt WP-CLI sử dụng trong xampp hoặc wampp môi trường windows hoặc linux
Hướng dẫn thay đổi thư mục theme wordpress không bị mất cấu hình theme

1 Comments

  1. Pingback: Hướng dẫn tạo Docker Container mã nguồn WordPress qua docker-file và docker compose – Blog nghiên cứu về lập trình, viết mã

THÊM BÌNH LUẬN Cancel reply

Dịch vụ thiết kế Wesbite

NỘI DUNG MỚI CẬP NHẬT

2. PHÂN TÍCH VÀ ĐẶC TẢ HỆ THỐNG

3. THIẾT KẾ HỆ THỐNG

1. TỔNG QUAN KIẾN THỨC THỰC HÀNH TRIỂN KHAI DỰ ÁN CÔNG NGHỆ THÔNG TIN

Hướng dẫn tự cài đặt n8n comunity trên CyberPanel, trỏ tên miền

Mẫu prompt tạo mô tả chi tiết bối cảnh

Giới thiệu

hocvietcode.com là website chia sẻ và cập nhật tin tức công nghệ, chia sẻ kiến thức, kỹ năng. Chúng tôi rất cảm ơn và mong muốn nhận được nhiều phản hồi để có thể phục vụ quý bạn đọc tốt hơn !

Liên hệ quảng cáo: [email protected]

Kết nối với HỌC VIẾT CODE

© hocvietcode.com - Tech888 Co .Ltd since 2019

Đăng nhập

Trở thành một phần của cộng đồng của chúng tôi!
Registration complete. Please check your email.
Đăng nhập bằng google
Đăng kýBạn quên mật khẩu?

Create an account

Welcome! Register for an account
The user name or email address is not correct.
Registration confirmation will be emailed to you.
Log in Lost your password?

Reset password

Recover your password
Password reset email has been sent.
The email could not be sent. Possible reason: your host may have disabled the mail function.
A password will be e-mailed to you.
Log in Register
×