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ầnenvironment
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!