Trong bài viết này, tôi sẽ giới thiệu với các bạn về: “ Tại sao chúng ta cần sử dụng Docker Compose? ”Và“ Cách sử dụng Docker Compose cho các dự án Laravel của bạn? “. Chúng tôi sẽ thử sử dụng Docker Compose để xem nó giúp cuộc sống của chúng tôi dễ dàng hơn như thế nào.
Bài gốc: Docker Compose cho dự án Laravel
Tôi cũng giả sử rằng bạn đã cài đặt Docker và Docker Compose trên máy tính / máy tính xách tay của mình. Nếu bạn chưa biết cách cài đặt Docker và Docker Compose, bạn có thể vào trang web của họ theo dõi tài liệu của họ để cài đặt.
Liên kết tài liệu:
- Bắt đầu với Docker: https://www.docker.com/get-started ;
- Cài đặt Docker Compose: https://docs.docker.com/compose/install/ ;
Tại sao chúng ta cần sử dụng Docker Compose?
Tôi đã gặp phải nhiều vấn đề khi nhóm của tôi làm việc với một dự án Laravel chạy phiên bản cũ của Laravel. Nó yêu cầu phiên bản PHP 5.4 và một số phần mở rộng cụ thể. Chúng tôi bắt đầu tự hỏi: “Làm thế nào để giữ cho toàn đội hoạt động cùng một môi trường cho dự án này?”.
Cuối cùng, tôi nhận thấy rằng Docker Compose có thể giúp cuộc sống của chúng ta dễ dàng hơn! Thật đáng kinh ngạc! Tôi chỉ cần xác định tệp Docker Compose và nhóm của chúng tôi có thể bắt đầu với dự án.
Bằng cách sử dụng Docker Compose, chúng tôi có thể:
- Xác định môi trường một lần, sử dụng nhiều lần, bất cứ lúc nào;
- Giữ môi trường nhất quán giữa các máy tính / giai đoạn;
- Cô lập môi trường đang chạy với máy tính chủ vì lý do bảo mật;
- Giúp các thành viên trong nhóm của bạn yên tâm vì thiết lập môi trường;
Docker Compose là gì?
Trên trang web chính thức, họ định nghĩa như sau:
Soạn là một công cụ để xác định và chạy các ứng dụng Docker nhiều vùng chứa. Với Soạn thư, bạn sử dụng tệp YAML để định cấu hình các dịch vụ của ứng dụng. Sau đó, với một lệnh duy nhất, bạn tạo và khởi động tất cả các dịch vụ từ cấu hình của mình.
Tổng quan về Docker Compose
Đó là sự thật! Khi bạn làm quen với Docker Compose, bạn sẽ có nhiều thời gian rảnh hơn cho các dự án của mình.
Hãy đá bây giờ
Trước tiên, hãy mở thiết bị đầu cuối của bạn và sao chép dự án docker-for-laravel mà tôi đã tạo. Sau khi clone project, vào thư mục này, bạn sẽ có một thư mục có cấu trúc như sau:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | . ├── conf │ ├── nginx │ │ └── app.conf │ └── php │ ├── docker-php-ext-bcmath.ini │ ├── docker-php-ext-gd.ini │ ├── docker-php-ext-intl.ini │ ├── docker-php-ext-mysqli.ini │ ├── docker-php-ext-opcache.ini │ ├── docker-php-ext-pdo_mysql.ini │ └── php.ini ├── docker-compose.yml ├── .env ├── php.dockerfile ├── README.md └── src └── public └── index.php |
Chúng ta hãy xem xét từng mục:
- Thư mục
conf
: chứa các tệp cấu hình cho nginx và PHP ; - Thư mục
src
: chứa mã nguồn của bạn – dự án của bạn sẽ đặt bên trong thư mụcsrc
; - File
php.dockerfile
: dùng để xây dựng hình ảnh PHP – cài đặt phần mở rộng, cài đặt trình tổng hợp…; - Tệp
docker-compose.yml
: tất cả các phép thuật đến từ tệp này – xác định các dịch vụ của dự án của bạn; - Tệp
.env
: đặt tên dự án và các cổng của bạn cho nginx và phpMyAdmin ;
Bây giờ, bạn có thể mở tệp .env
để thay đổi tên dự án và các cổng. Sau khi thay đổi tên dự án, hãy mở conf/nginx/app.conf
để thay đổi URL fastcgi_pass
bằng tên vùng chứa PHP mới. Ví dụ, tên dự án mặc định trong tệp .env
là docker-laravel , vì vậy tên vùng chứa PHP sẽ là docker-laravel-php ( với hậu tố “-php” ). Nội dung mặc định của app.conf
sẽ như sau:
1 2 3 4 5 6 | server { location ~ .php$ { fastcgi_pass docker-laravel-php:9000; } } |
Ví dụ: tôi đã thay đổi tên dự án của mình trong tệp .env
thành dự án của tôi, vì vậy vùng chứa PHP của tôi sẽ là dự án -php của tôi . Chúng tôi cần thay đổi URL fastcgi_pass
trong app.conf
thành tên vùng chứa PHP mới:
1 2 3 4 5 6 | server { location ~ .php$ { fastcgi_pass my-project-php:9000; } } |
Đó là nó! Chúng ta có thể tận hưởng nó ngay bây giờ. Một số lệnh để bạn chơi:
- Tạo vùng chứa:
docker-compose up -d
; - Loại bỏ các vùng chứa:
docker-compose down --remove-orphans
; - Dừng vùng chứa:
docker-compose stop
; - Khởi động vùng chứa:
docker-compose start
;
Lưu ý: bạn chỉ có thể chạy các lệnh trên trong thư mục chứa docker-compose.yml
.