Docker là một công cụ mạnh mẽ giúp quản lý và triển khai ứng dụng trong các môi trường container hóa. Với Docker, việc xây dựng, triển khai và quản lý các ứng dụng trở nên dễ dàng hơn bao giờ hết. Trong bài viết này, chúng ta sẽ cùng tìm hiểu cách sử dụng Docker-Compose để thiết lập môi trường làm việc cho một dự án Laravel, đảm bảo mọi thứ hoạt động trơn tru và hiệu quả.
Tại Sao Nên Sử Dụng Docker-Compose Cho Laravel?
Docker-Compose cho phép bạn định nghĩa và chạy nhiều container Docker cùng một lúc. Điều này rất hữu ích cho các ứng dụng Laravel, nơi bạn có thể cần phối hợp giữa nhiều dịch vụ như web server (Nginx hoặc Apache), PHP-FPM, cơ sở dữ liệu MySQL và công cụ quản lý cơ sở dữ liệu như phpMyAdmin. Nhờ vào Docker-Compose, bạn có thể dễ dàng tạo ra một môi trường hoàn chỉnh mà không cần phải cài đặt tách biệt từng phần mềm lên máy chủ của mình.
Các Bước Thiết Lập Môi Trường Laravel Với Docker-Compose
1. Cài Đặt Docker và Docker-Compose
Trước tiên, bạn cần cài đặt Docker và Docker-Compose trên máy tính của mình. Bạn có thể truy cập trang web chính thức của Docker để tải về và cài đặt phần mềm. Sau khi cài đặt xong, hãy kiểm tra phiên bản đã cài đặt bằng câu lệnh:
docker --version
docker-compose --version
2. Tạo Project Laravel
Để bắt đầu với Laravel, bạn có thể tạo một dự án mới bằng cách sử dụng Composer. Nếu bạn chưa có Composer, Hoclaravel.vn khuyên bạn hãy cài đặt Composer trước. Sau khi cài đặt xong, thực hiện lệnh sau để tạo dự án Laravel:
composer create-project --prefer-dist laravel/laravel ten-du-an
Nếu bạn đã có mã nguồn của dự án Laravel, bạn có thể bỏ qua bước này.
3. Tạo Dockerfile Cho PHP
Tiếp theo, bạn cần tạo một Dockerfile
cho PHP để cài đặt các extension cần thiết cho Laravel. Tạo một file có tên Dockerfile
trong thư mục dự án và thêm nội dung sau:
FROM php:8.0-fpm
# Cài đặt các PHP extension cần thiết
RUN docker-php-ext-install pdo pdo_mysql
# Cài đặt Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
WORKDIR /var/www/html
4. Tạo File Docker-Compose
Tiếp theo, bạn cần tạo file docker-compose.yml
để định nghĩa cấu trúc của các container mà bạn sẽ sử dụng. Tạo một file có tên docker-compose.yml
trong thư mục dự án và thêm nội dung dưới đây:
version: '3'
services:
nginx:
image: nginx:stable
ports:
- "8080:80"
volumes:
- ./ten-du-an:/var/www/html
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
php:
build:
context: .
dockerfile: Dockerfile
volumes:
- ./ten-du-an:/var/www/html
ports:
- "9000:9000"
mysql:
image: mysql:5.7
volumes:
- mysql_data:/var/lib/mysql
environment:
MYSQL_DATABASE: laravel
MYSQL_USER: user
MYSQL_PASSWORD: password
MYSQL_ROOT_PASSWORD: root_password
ports:
- "3306:3306"
phpmyadmin:
image: phpmyadmin/phpmyadmin
ports:
- "8081:80"
environment:
PMA_HOST: mysql
PMA_PORT: 3306
PMA_USER: user
PMA_PASSWORD: password
volumes:
mysql_data:
5. Cấu Hình Nginx
Để Nginx có thể hoạt động đúng với Laravel, bạn cần tạo file cấu hình cho Nginx. Tạo một thư mục có tên nginx
trong thư mục dự án, và bên trong thư mục này, tạo file default.conf
với nội dung sau:
server {
listen 80;
server_name localhost;
root /var/www/html/public;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass php:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
6. Chạy Docker-Compose
Sau khi đã cấu hình xong, bạn có thể khởi động các container bằng lệnh sau:
docker-compose up -d
Lệnh này sẽ khởi động các dịch vụ được định nghĩa trong file docker-compose.yml
. Để kiểm tra trạng thái của các container, bạn có thể sử dụng:
docker-compose ps
7. Truy Cập Ứng Dụng
Bây giờ bạn có thể truy cập ứng dụng Laravel của mình thông qua trình duyệt web tại địa chỉ:
http://localhost:8080
Và bạn có thể truy cập phpMyAdmin tại địa chỉ:
http://localhost:8081
Một Số Lưu Ý
- Nếu bạn gặp lỗi quyền truy cập, hãy kiểm tra và cấp quyền cho các thư mục hoặc tệp mà ứng dụng cần truy cập.
- Bạn cũng có thể cần điều chỉnh các biến môi trường trong các file cấu hình để phù hợp với môi trường của bạn.
Kết Luận
Bằng cách sử dụng Docker-Compose, bạn có thể nhanh chóng thiết lập môi trường làm việc cho dự án Laravel mà không phải lo lắng về các vấn đề cài đặt và cấu hình phức tạp. Hãy khám phá thêm các chức năng mạnh mẽ khác của Docker để tối ưu hóa quy trình phát triển của bạn!