Dựng môi trường phát triển nhanh chóng với docker-php-development
Nguồn: viblo.asia/p/dung-moi-truong-phat-trien-nhanh-chong-voi-sun-asterisk-researchdocker-php-development-maGK7329Kj2
Last updated
Nguồn: viblo.asia/p/dung-moi-truong-phat-trien-nhanh-chong-voi-sun-asterisk-researchdocker-php-development-maGK7329Kj2
Last updated
Xin chào 500 anh em Viblo. Ngày hôm nay mình sẽ chia sẻ tới mọi người một library mà bộ phận mình đang sử dụng để dựng môi trường phát triển cho PHP/Node.js một cách nhanh chóng. Đó chính là Docker PHP Development.
Docker PHP Development là tổng hợp các file cấu hình docker-compose mà team mình đã tạo ra để thuận tiện cho việc sử dụng trong các dự án PHP/Node.js của bộ phận. Với khoảng 14 service thường dùng đã được cấu hình sẵn bằng docker-compose như:
Traefik
PHP / Node.js / Redis
MySQL / MariaDB / Postgres
PHPMyadmin / Pgadmin - Postgres Tool
Elasticsearch
Echo Server
Minio
Mailhog
Trong đó thì Traefik sẽ là Reverse Proxy cho toàn bộ các web service. Bạn chỉ cần khai báo các service mà bạn cần dùng, thay đổi một vài biến environment trong file .env
và chạy script được cung cấp sẵn là PHP/Node.js app sẽ có thể truy cập được ngay trên browser. Quả là tiện lợi phải không nào?
Setup nhanh chóng, dễ dàng
Cung cấp các script có sẵn, tiện lợi khi sử dụng
Tích hợp sẵn dành cho Laravel
Do dùng Docker nên giúp cô lập môi trường phát triển với máy thật và các dự án với nhau
Giúp bạn làm quen, luyện tập kỹ năng sử dụng Docker, tham khảo các config mà team mình đã tạo ra trong lib
Dễ dàng setup mở rộng qua việc sử dụng Docker
Do sử dụng Traefik + Docker nên nếu chưa dùng Traefik thì sẽ hơi bỡ ngỡ ban đầu. Tuy nhiên, cấu hình Traefik rất ngắn và rất đơn giản nên bạn đọc qua document trong 5, 10 phút là đã hiểu và có thể tùy biến lại reverse proxy khi cần.
Ngoài ra, sẽ có những case đặc biệt tùy dự án của bạn mà bạn sẽ cần chỉnh sửa hoặc override lại config. Do đó, các kiến thức cơ bản về sử dụng network, volume cũng sẽ cần bạn nắm được.
Rồi, bây giờ hãy cùng khám phá cách sử dụng Docker PHP Development nhé!
Để sử dụng Docker PHP Development, bạn chỉ cần clone repo của nó về trên máy bạn. Ví dụ, mình clone Docker PHP Development về lưu vào thư mục docker
sẽ chạy lệnh sau:
Khi sử dụng Docker PHP Development, mình khuyến khích nên đặt cấu trúc thư mục của dự án theo mẫu sau cho dễ quản lý:
Ở trên mình trình bày ra trong bài để mọi người hiểu nên hơi dài chứ việc sử dụng thực tế thì rất đơn giản:
Clone repo về thư mục docker
như trên.
Tạo file services
và .env
từ các file mẫu tương ứng là services.example
và .env.example
.
Thay đổi biến môi tường trong .env
, khai báo tên các service cần dùng vào file services
.
Chạy script ./project up
để chạy các service được khai báo lên.
Truy cập web trên browser để kiểm tra kết quả.
File .env
là file chứa các biến môi trường sẽ được docker-compose đọc và gán lại vào trong file config. Mỗi project sẽ có các thông số khác nhau như domain, port, đường dẫn tới thư mục chứa sourcecode... Bạn có thể tùy chỉnh lại bằng cách thay đổi giá trị các biến môi trường trong file .env
.
File .env
được ignore bởi git. Sau khi clone về sẽ chưa có file này mà bạn cần tự tạo. Nội dung chúng ta sẽ lấy từ file mẫu là .env.example
, bạn chỉ cần copy file lúc bắt đầu setup như sau:
Các biến môi trường được cung cấp gồm:
Tên biến | Giá trị mặc định | Mô tả |
---|---|---|
|
| Prefix cho tên của container. VD: PHP container sẽ tên là |
|
| Đường dẫn tới thư mục sourcecode PHP của bạn, được mount vào container PHP |
|
| Đường dẫn tới thư mục sourcecode Node.js trên máy bạn, được mount vào container Node.js |
|
| Đường dẫn thư mục chứa data chung. VD: khi bật MySQL, thư mục data của MySQL sẽ được mount ra |
|
| Thư mục chứa các file logs của các service như Traefik: Access log, error log.. |
|
| Tên domain của website sẽ được sử dụng, hiện tại biến này đang dùng chung cho cả file cấu hình PHP, Node.js nên nếu bạn chạy các PHP và Node.js đồng thời thì sẽ cần sửa lại config. |
| 8000 | Tên port cho reverse proxy cho web PHP / Node.js. Dùng để truy cập PHP/Node.js trên browser. |
|
| Domain được dùng cho trang Dashboard của Traefik |
|
| Tên database cần khởi tạo |
|
| Tên username truy cập vào database |
|
| Mật khẩu để truy cập vào database |
|
| Port cho service database (Deprecated). Đã bị loại bỏ và không còn được sử dụng |
|
| Đường dẫn tới file |
Trên đây là các environment mà bạn chỉ cần thay đổi cho phù hợp với dự án nhé.
File services
là file chứa tên file cấu hình của các service mà bạn muốn bật lên để sử dụng. Các file cấu hình này ở trong thư mục compose
, bạn có thể xem qua.
Mỗi service được khai báo trong services
cần đặt trên một dòng riêng và cần có một dòng trống ở cuối file. File này cũng được ignore khỏi Git nên khi setup bạn cần tạo nội dung từ file có sẵn là services.example
.
Ví dụ service PHP, Echo Server được cấu hình trong file compose/php.yml
và laravel/echo-server.yml
, bạn muốn dùng cả hai service này thì thêm nội dung tương ứng vào file services
là:
Dưới đây là các lệnh được tích hợp sẵn vào trong script ./project
mà bạn có thể sử dụng.
Command | Mô tả | Ví dụ mẫu |
---|---|---|
| Chạy tất cả các services đã được khai báo lên |
|
| Tắt bỏ tất cả các services khi không dùng |
|
| Chui vào trong một container sử dụng sh shell |
|
| Chui vào trong một container sử dụng bash shell |
|
| Chạy một command trong container |
|
| Xem danh sách các container đang chạy có prefix trùng với |
|
Trên đây là bài giới thiệu về library Docker PHP Development. Mời các bạn cùng sử dụng trải nghiệm nhé. Nếu bạn cần hỗ trợ hay thắc mắc gì đừng ngại comment vào phía dưới bài viết này mình cùng thảo luận nhé. Đừng quên cho mình 1 follow, upvote, clip nếu bạn thấy bài chia sẻ này hữu ích nha. Hẹn gặp lại mọi người trong những bài viết khác.
Nếu thấy nội dung này bổ ích, hãy mời tôi một tách cà phê nha! https://me.momo.vn/nhquydev