21/10/2024

Xây dựng và quản lý wordpress với docker compose trên Centos 7

Hôm nay mình sẽ hướng dẫn các bạn các xây dựng wordpress bằng Docker Compose. Điều kiện đầu là VPS đã cài đặt Docker CE và Docker Compose.

Docker Compose là gì?

Docker Compose là một công cụ của Docker dùng để định nghĩa và chạy các ứng dụng nhiều container. Với Docker Compose, bạn có thể định nghĩa các dịch vụ, mạng, và volume cần thiết cho ứng dụng của mình trong một tệp cấu hình duy nhất, thường là docker-compose.yml, và sau đó khởi chạy tất cả các thành phần chỉ bằng một lệnh đơn giản.

Tại sao cần dùng Docker Compose?

Docker Compose rất hữu ích khi bạn cần chạy nhiều container Docker để tạo thành một ứng dụng hoàn chỉnh, ví dụ như một website bao gồm:

  • Web server (như Nginx hoặc Apache)
  • Database server (như MySQL hoặc PostgreSQL)
  • Redis hoặc các cache server khác

Thay vì khởi động từng container một và cấu hình kết nối giữa chúng bằng tay, Docker Compose giúp bạn quản lý các container này một cách dễ dàng và nhanh chóng.

1. Chuẩn bị thư mục và file Docker Compose

mkdir wordpress_docker
cd wordpress_docker

Tạo một file docker-compose.yml trong thư mục này và thêm nội dung sau:

services:
  db:
    image: mysql:5.7
    volumes:
      - ./db_data:/var/lib/mysql # Mount MySQL data to a host folder
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: Qwerty@321
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: Qwerty@321

  wordpress:
    depends_on:
      - db
    image: wordpress:latest
    ports:
      - 8000:80
    volumes:
      - ./wordpress:/var/www/html # Mount WordPress data to a host folder
    restart: always
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: Qwerty@321

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    container_name: phpmyadmin
    restart: always
    environment:
      PMA_HOST: db
      MYSQL_ROOT_PASSWORD: Qwerty@321
    ports:
      - "8081:80"
    depends_on:
      - db

volumes:
  db_data: {}

2. Khởi động dịch vụ

Chạy lệnh sau để khởi động: docker compose up -d

Sau khi lệnh đã tải về và cài đặt 3 container. Ta có thể thấy 3 container đã được tạo wordpress được listen port 8000 để truy cập từ bên ngoài và port 80 để sử dụng trong container.

Ta có thể truy cập wordpress qua link: http://<IP VPS>:8000

Tiến hành nhập các thông số cần thiết để cấu hình.

3. Một vài lệnh quản trị với docker compose

Stop và delete toàn bộ container: 

docker compose down 

Với lệnh này thì sẽ stop và delete toàn bộ container có trong file config .yml. Dữ liệu vẫn tồn tại nếu volume ánh xạ ra ổ bên ngoài ví dụ trường hợp:

volumes:

  - ./db_data:/var/lib/mysql

Thì ./db_data bên ngoài sẽ còn, /var/lib/mysql thư mục trong container sẽ bị xóa.

Khởi động lại toàn bộ container

docker compose restart

Liệt kê các container đang hoạt động

docker compose ps -a

Xem log hoạt động của các container

docker compose logs

Hoặc xem log realtime với lệnh: docker compose logs -f

Kiểm tra config

docker compose config

Cập nhật images 

docker compose pull

Xóa container, images, network khi container đã stop

docker system prune

4. Backup và restore  dịch vụ

Copy thư mục wordpress_docker tới 1 VPS bất kỳ cài đặt docker ce và docker compose là có thể run: docker compose up -d để và hoạt động bình thường.

Chúc các bạn thành công !!