Saturday, January 18, 2025

Triển khai PhpMyAdmin với Nginx sử dụng Docker Compose

-

PhpMyAdmin, Nginx, MySQL và MariaDB là các công cụ và công nghệ phổ biến trong lĩnh vực quản lý cơ sở dữ liệu web. Dưới đây là mô tả ngắn về từng công cụ:

  • phpMyAdmin: phpMyAdmin là một ứng dụng web mã nguồn mở được sử dụng để quản lý cơ sở dữ liệu MySQL hoặc MariaDB thông qua giao diện đồ họa. Nó cung cấp các tính năng như tạo cơ sở dữ liệu, bảng, người dùng, thực hiện truy vấn SQL, sao lưu và phục hồi dữ liệu, và nhiều tính năng khác. phpMyAdmin giúp đơn giản hóa việc quản lý và tương tác với cơ sở dữ liệu MySQL hoặc MariaDB.
  • Nginx: Nginx (đọc là “engine-x”) là một máy chủ web và proxy ng reverse-proxy mã nguồn mở. Nó được thiết kế để xử lý các tải trọng lớn và có hiệu suất cao, đồng thời tiêu thụ ít tài nguyên hệ thống. Nginx được sử dụng rộng rãi làm máy chủ web để phục vụ các trang web tĩnh và động.
  • MySQL và MariaDB: MySQL và MariaDB là hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) mã nguồn mở. Chúng cung cấp một cách tiện lợi và mạnh mẽ để lưu trữ và quản lý cơ sở dữ liệu quan hệ. MySQL đã trở thành một trong những RDBMS phổ biến nhất và được sử dụng rộng rãi trong các ứng dụng web. MariaDB là một nhánh phát triển từ MySQL và được xây dựng để duy trì tính tương thích ngược với MySQL và cung cấp các cải tiến và tính năng mới.

Tại sao chúng ta cần có phpMyAdmin?

  • phpMyAdmin cung cấp giao diện đồ họa thân thiện cho việc quản lý cơ sở dữ liệu MySQL hoặc MariaDB. Nó giúp người dùng không cần phải làm quen với lệnh SQL để thao tác với cơ sở dữ liệu.
  • Nó cung cấp các tính năng như tạo, chỉnh sửa và xóa cơ sở dữ liệu, bảng, truy vấn dữ liệu, sao lưu và phục hồi dữ liệu, quản lý người dùng và phân quyền, và nhiều tính năng khác.
  • phpMyAdmin giúp đơn giản hóa công việc quản lý cơ sở dữ liệu, giúp người dùng tạo, sửa đổi và truy vấn dữ liệu một cách dễ dàng và tiện lợi thông qua giao diện web.

Để cài đặt phpMyAdmin và Nginx bằng Docker Compose, bạn có thể tạo một file docker-compose.yml với nội dung sau:

cat > docker-compose.yml << 'OEF'
version: '3.8'
services:
  nginx:
    image: nginx
    container_name: nginx
    restart: always
    ports:
      - 80:80
    volumes:
      - /home/nginx.conf:/etc/nginx/conf.d/default.conf
    depends_on:
      - phpmyadmin

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    container_name: phpmyadmin
    restart: always
    environment:
      - PMA_ARBITRARY=1
    depends_on:
      - mysql
      - mariadb

  mysql:
    image: mysql
    container_name: mysql
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=Hoanghd164
      - MYSQL_DATABASE=wiki-hoanghd-mysql
      - MYSQL_USER=hoanghd
      - MYSQL_PASSWORD=Hoanghd164

  mariadb:
    image: mariadb
    container_name: mariadb
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=Hoanghd164
      - MYSQL_DATABASE=wiki-hoanghd-mariadb
      - MYSQL_USER=hoanghd
      - MYSQL_PASSWORD=Hoanghd164
OEF

Lưu ý thay đổi các giá trị Hoanghd164, wiki-hoanghd-mariadb, wiki-hoanghd-mysqlhoanghd thành giá trị mong muốn của bạn.

Sau đó, bạn tạo một file nginx.conf với nội dung sau:

cat > /home/nginx.conf << 'OEF'
server {
    listen 80;
    server_name phpmyadmin.hoanghd.com;

    location / {
        proxy_pass http://phpmyadmin;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}
OEF

Lưu ý thay phpmyadmin.hoanghd.com bằng tên miền hoặc địa chỉ IP của máy chủ của bạn.

Sau khi đã chuẩn bị các tệp docker-compose.ymlnginx.conf, bạn chạy lệnh sau để bắt đầu cài đặt:

$ docker-compose up -d
[+] Running 5/5
 ⠿ Network hoanghd_default  Created                                                                              0.1s
 ⠿ Container mariadb        Started                                                                              2.3s
 ⠿ Container mysql          Started                                                                              1.3s
 ⠿ Container phpmyadmin     Started                                                                              3.0s
 ⠿ Container nginx          Started                                                                              4.0s

Docker Compose sẽ tải về và cài đặt các hình ảnh Docker cần thiết và khởi chạy các dịch vụ Nginx, phpMyAdmin và MySQL.

Kiểm tra lại các container của bạn đã chạy thành công chưa.

$ docker ps
CONTAINER ID   IMAGE                   COMMAND                  CREATED          STATUS          PORTS                               NAMES
854fb5b45bc1   nginx                   "/docker-entrypoint.…"   50 seconds ago   Up 46 seconds   0.0.0.0:80->80/tcp, :::80->80/tcp   nginx
aca1ff9ab089   phpmyadmin/phpmyadmin   "/docker-entrypoint.…"   51 seconds ago   Up 47 seconds   80/tcp                              phpmyadmin
20ca07106047   mariadb                 "docker-entrypoint.s…"   51 seconds ago   Up 48 seconds   3306/tcp                            mariadb
a45d5dc5e3c3   mysql                   "docker-entrypoint.s…"   51 seconds ago   Up 49 seconds   3306/tcp, 33060/tcp                 mysql

Sau khi quá trình cài đặt hoàn tất, bạn có thể truy cập phpMyAdmin thông qua trình duyệt web bằng cách truy cập vào http://phpmyadmin.hoanghd.com.

Mình thử login vào server mysql (tức là container của mình tạo chung với Docker Compose).

Kết quả mình có database có tên wiki-hoanghd-mysql.

Tương tự mình thử login vào server mariadb (cũng là container của mình tạo chung với Docker Compose).

Kết quả mình có database có tên wiki-hoanghd-mariadb.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories