Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the wordpress-seo domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /var/www/vinascript/html/wp-includes/functions.php on line 6114
Triển khai dự án PHP, Mysql với Nginx trên Docker - VinaScript

Latest Post

Triển khai dự án PHP, Mysql với Nginx trên Docker Tìm hiểu về HTML – Ưu điểm, nhược điểm và cách hoạt động của HTML

Docker là một nền tảng mã nguồn mở giúp tự động hóa quá trình phát triển, triển khai và chạy các ứng dụng trong các container. Container là các gói phần mềm nhẹ, độc lập, chứa tất cả những gì ứng dụng cần để hoạt động, giúp đảm bảo sự nhất quán khi chạy trên mọi môi trường. Docker giúp tăng tính di động, hiệu quả sử dụng tài nguyên, và khả năng triển khai nhanh chóng nhờ vào việc sử dụng các image và container. Nền tảng này đã trở thành công cụ phổ biến cho việc quản lý ứng dụng hiện đại, từ phát triển đến triển khai trong các hệ thống phân tán và microservices.

Bạn nào chưa biết về Docker có thể tham khảo thêm bài viết: Docker là gì? Hướng dẫn cài đặt Docker trên Windows và Linux

Trong bài này blog hướng dẫn triển khai một dự án web PHP, MySQL, và Nginx trên Docker. Để bắt đầu, bạn có thể tạo một cấu trúc dự án và sử dụng Docker Compose để dễ dàng quản lý. Dưới đây là hướng dẫn từng bước để thực hiện điều này:

1. Tạo cấu trúc thư mục dự án (Docker Compose File)

Tạo một thư mục dự án chứa tất cả các tệp cấu hình của bạn, ví dụ: my_project. Dự án với các tệp và thư mục sau:

project-root/
│
├── docker-compose.yml
├── nginx/
│   └── default.conf
├── php/
│   └── Dockerfile
└── www/
    └── index.php

2. Cấu hình docker-compose.yml

Tạo tệp docker-compose.yml để định nghĩa các dịch vụ Nginx, PHP-FPM và MySQL:

version: '3.8'

services:
  nginx:
    image: nginx:latest
    container_name: nginx-container
    ports:
      - "80:80"
    volumes:
      - ./www:/var/www/html
      - ./nginx/default.conf:/etc/nginx/conf.d/default.conf
    depends_on:
      - php

  php:
    build:
      context: ./php  # Đảm bảo Dockerfile ở thư mục ./php
    container_name: php-container
    volumes:
      - ./www:/var/www/html
    expose:
      - "9000"  # Cung cấp port PHP-FPM (nếu bạn dùng PHP-FPM thay vì Apache)

  mysql:
    image: mysql:latest
    container_name: mysql-container
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword
      MYSQL_DATABASE: testdb
      MYSQL_USER: user
      MYSQL_PASSWORD: password
    ports:
      - "3306:3306"
    volumes:
      - db_data:/var/lib/mysql

volumes:
  db_data:

3. Tạo tệp nginx/default.conf

Cấu hình Nginx để trỏ đến ứng dụng PHP:

server {
    listen 80;
    server_name localhost;

    root /var/www/html;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass php-container:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

4. Tạo php/Dockerfile

Tạo Dockerfile để xây dựng dịch vụ PHP-FPM:

FROM php:7.4-fpm

# Cài đặt các tiện ích bổ sung nếu cần thiết
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 pdo pdo_mysql mysqli

5. Tạo tệp www/index.php

Đảm bảo có tệp PHP cơ bản để kiểm tra:

<?php
phpinfo();
?>

6. Khởi chạy Docker Compose

Trong thư mục dự án (my_project), mở terminal hoặc command prompt và chạy lệnh sau để khởi động các container:

docker-compose up -d

Docker sẽ tải về các hình ảnh cần thiết (Nginx, PHP-FPM 8, MySQL), tạo các container và khởi động chúng.

Giờ đây, bạn có thể truy cập ứng dụng PHP qua địa chỉ http://localhost:8080 trên trình duyệt. Nếu mọi thứ được cấu hình đúng, bạn sẽ thấy thông tin PHP hiển thị.

7. Dừng Dự Án

Khi bạn muốn dừng các container, bạn có thể chạy lệnh sau trong thư mục dự án:

docker-compose down

Tùy Chỉnh Thêm

  • MySQL: Bạn có thể chỉnh sửa MYSQL_ROOT_PASSWORD, MYSQL_USER, và MYSQL_PASSWORD trong phần environment của service MySQL để thay đổi thông tin đăng nhập.
  • Nginx: Thêm các cấu hình bảo mật hoặc tối ưu hóa vào tệp nginx.conf nếu cần.

Nếu bạn gặp khó khăn hoặc có câu hỏi nào, đừng ngần ngại yêu cầu thêm trợ giúp!

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *