Bộ đệm Docker-php-ext-install
Trong bài viết này, chúng tôi sẽ tạo một hình ảnh vùng chứa cho ứng dụng Symfony của bạn bằng Swoole Runtime hiệu suất cao và tự động triển khai hình ảnh này lên Docker Hub Show
Tại sao lại là Hình ảnh vùng chứa? Các thùng chứa đặc biệt phổ biến vì chúng mang lại nhiều lợi thế hơn so với các máy ảo (VM). Về cơ bản, máy ảo chứa các bản sao hoàn chỉnh của một hệ điều hành mạnh mẽ, bản thân ứng dụng, tất cả các tệp nhị phân và thư viện cần thiết. Nhưng hình ảnh Vùng chứa chỉ lưu trữ và chạy các tệp nhị phân và thư viện bạn cần. Bằng cách này, bạn chỉ sử dụng các tài nguyên cần thiết tối thiểu trong khi mở rộng quy mô ứng dụng của mình Mặt khác, cài đặt, quản lý và mở rộng máy ảo là một hoạt động tốn kém về thời gian và tiền bạc. Các thùng chứa dễ cài đặt, quản lý và mở rộng quy mô tốt hơn so với các máy ảo. Các công cụ như Kubernetes và Docker Swarm có sẵn để mở rộng quy mô Một ưu điểm khác của hình ảnh vùng chứa xuất hiện trong quá trình phát triển và thử nghiệm. PHP có nhiều tính năng từ các tiện ích mở rộng của nó. Việc định cấu hình và cài đặt các tiện ích mở rộng này giúp tăng đáng kể quá trình chuẩn bị cho môi trường phát triển hoạt động. Ngay cả khi chúng tôi nghĩ rằng bạn đã giải quyết các trường hợp như vậy, ngay cả sự khác biệt về hệ điều hành cũng có thể ảnh hưởng đến đầu ra. Trong môi trường phát triển và CI của bạn (Gitlab Runner, Github Actions). Hình ảnh vùng chứa được định cấu hình với các thuộc tính giống như môi trường sản xuất cho phép bạn giải quyết hầu hết các sự cố trước khi chúng xảy ra Tại sao Alpine?Alpine mô tả chính nó như là
Docker mô tả Alpine là
Hình ảnh vùng chứa sử dụng Ubuntu tạo ra hiệu suất thấp hơn do có quá nhiều thành phần trong đó. Nếu bạn đang phát triển một dự án tập trung vào bảo mật và chuyên nghiệp hơn, bạn có thể xem Redhat Universal Base Image trả phí. Chúng tôi sẽ tiếp tục sử dụng Alpine trong bài viết này Tại sao Swoole?PHP-FPM, đã được sử dụng cho PHP trong nhiều năm, không còn có thể đáp ứng các yêu cầu ngày nay như hiệu suất và khả năng mở rộng. Mặt khác, Swoole, là một trong những thời gian chạy tốt nhất cho các ứng dụng PHP với những đổi mới như hiệu suất cao, dễ dàng mở rộng quy mô và chỉ chạy lại các mã cần thiết trong quá trình xử lý yêu cầu. Để tìm hiểu thêm về Swoole, bạn có thể đọc bài viết sau Hãy giải quyết PHP Swoole một cách trang trọngTôi muốn nói về Swoole trong bài viết này nhưng nó sẽ không đề cập đến các quy trình rườm rà như cài đặt…Trung bình. com Cài đặt Như mình đã đề cập ở đầu bài, chúng ta sẽ tạo container image tự động bằng CI tools. Tuy nhiên, bạn cần Container Runtime (Docker, Podman, v.v. ) để xây dựng và triển khai hình ảnh bạn đã phát triển trên máy tính của riêng mình cho mục đích thử nghiệm. Bạn có thể xem lại bài viết sau để cài đặt Docker theo hệ điều hành của mình Cài đặt công cụ DockerDocker Desktop cho Linux Docker Desktop giúp bạn xây dựng, chia sẻ và chạy các bộ chứa một cách dễ dàng trên Mac và Windows giống như…tài liệu. người đóng tàu. com Hình ảnh vùng chứa Chúng tôi sẽ tạo 2 Hình ảnh vùng chứa;
Hình ảnh bộ chứa cơ sở PHPChúng tôi sẽ sử dụng hình ảnh này để tạo hình ảnh cơ sở cho nhiều dự án. Chúng tôi sẽ tạo hình ảnh này vì sẽ lãng phí thời gian để xây dựng đi xây dựng lại các tiện ích mở rộng cần thiết cho từng dự án. Bằng cách này, bạn có thể dễ dàng thay đổi phiên bản PHP trong ứng dụng của mình. Trong bài viết này, chúng ta sẽ tiếp tục với PHP 8. 1 DockerfileĐể tạo hình ảnh vùng chứa, bạn phải có một composer require runtime/swoole 3. Mỗi hướng dẫn tạo một lớp. Nếu nó không thay đổi, nó sẽ không được biên dịch lạiMỗi hướng dẫn tạo một lớp
Bạn có thể tùy chỉnh file Dockerfile theo ý muốn của mình. Trong ví dụ này, chúng tôi sẽ sử dụng Trình giám sát để xử lý Swoole. Ngoài ra, nếu dự án của bạn có cron, chúng tôi sẽ sử dụng Giám sát để xử lý cron. Đây là lý do tại sao chúng tôi sử dụng Trình giám sát là Trình giám sát sẽ tự động khởi động lại ứng dụng của bạn khi có sự cố và ứng dụng của bạn rơi vào trạng thái hoảng loạn Tệp điểm vào như sau container bắt đầungười giám sát. d/app-swoole. ban đầungười giám sát. d/ứng dụng-cron. ban đầuXây dựngĐể tạo hình ảnh vùng chứa, chỉ cần chạy lệnh sau terminal trong thư mục chứa dự án composer require runtime/swoole 1
Khi chạy lệnh docker run -itd --rm --name symfony-example -p 9000:80 --env-file .env thecaliskan/symfony-swoole-docker-example 4 để kiểm tra ảnh đã tạo, nếu thấy xuất hiện như trên là đã tạo thành công. Chúng tôi cần một dịch vụ đăng ký vùng chứa để truy cập hình ảnh vùng chứa này từ mọi nơi. Trong bài viết này, chúng tôi sẽ sử dụng Docker Hub. Chúng tôi sẽ sử dụng Github Actions để tự động xây dựng và xuất bản. Bạn có thể lưu trữ hình ảnh vùng chứa riêng tư và công khai của mình trên Docker HubTự động xây dựng và xuất bảngithub/quy trình công việc/ci. ymlBạn có thể nhận được mã thông báo sau khi tạo người dùng mới trên Docker Hub. Bạn cần thêm mã thông báo này làm biến môi trường trong phần bí mật của trang cài đặt dự án github của bạn. Tham khảo tài liệu dưới đây để biết thêm thông tin chi tiết Xây dựng và đẩy hình ảnh Docker - GitHub MarketplaceGitHub Action để xây dựng và đẩy hình ảnh Docker bằng Buildx với sự hỗ trợ đầy đủ các tính năng do Moby BuildKit cung cấp…github. com Hình ảnh vùng chứa ứng dụngBây giờ mọi thứ đã sẵn sàng để tạo container image của dự án. Trong khi chúng tôi tạo hình ảnh vùng chứa này, chúng tôi sẽ tạo 3 lớp composer require runtime/swoole 3hướng dẫn xây dựng
Thời gian chạy lenChúng ta sẽ sử dụng thời gian chạy chính thức của symfony swoole ( docker run -itd --rm --name symfony-example -p 9000:80 --env-file .env thecaliskan/symfony-swoole-docker-example 7) để thêm Thời gian chạy Swoole vào dự áncomposer require runtime/swoole Sau khi cài đặt hoàn tất, bước cuối cùng để kích hoạt swoole là thêm phần sau vào /public/index. tập tin php. Vì biến môi trường docker run -itd --rm --name symfony-example -p 9000:80 --env-file .env thecaliskan/symfony-swoole-docker-example 8 được xác định bên trong ảnh bộ chứa docker run -itd --rm --name symfony-example -p 9000:80 --env-file .env thecaliskan/symfony-swoole-docker-example 6, Thời gian chạy Swoole sẽ không chạy khi bạn chạy dự án bên ngoài ảnh bộ chứa. Kiểm tra liên kết để biết thêm thông tin chi tiết về cài đặt cấu hìnhcông khai/chỉ mục. phpđịnh kỳNếu bạn đang sử dụng cron trong dự án, bạn có thể thêm nó vào tệp composer require runtime/swoole 80 như saucrontabTự động xây dựng và xuất bảngithub/quy trình công việc/ci. ymlChúng tôi sẽ sử dụng tệp composer require runtime/swoole 81 được sử dụng trong Hình ảnh bộ chứa cơ sở PHP. Chúng tôi sẽ thay thế tên hình ảnh vùng chứa ở dưới cùng bằng tên của dự án. Sau đó, hình ảnh vùng chứa sẽ sẵn sàng để sử dụngChạy hình ảnh vùng chứa Bạn có thể chạy hình ảnh vùng chứa mà bạn đã tạo bằng đoạn mã sau. Để chạy hình ảnh vùng chứa bằng một nút, bạn có thể áp dụng cách sau. Trong bài viết tiếp theo, tôi sẽ giải thích cách chạy multi-node và xuất bản với máy chủ proxy docker run -itd --rm --name symfony-example -p 9000:80 --env-file .env thecaliskan/symfony-swoole-docker-example Bạn có thể dừng container bằng đoạn mã sau composer require runtime/swoole 8Hình ảnh vùng chứa điểm chuẩnHình ảnh vùng chứa Việc sử dụng tài nguyên khi hình ảnh vùng chứa chạy với 100 công nhân được mở lần đầu tiên như sau Một điểm cuối đã được thiết lập để trả về một phản hồi JSON đơn giản. Chúng tôi sẽ xem xét hiệu suất và mức tiêu thụ tài nguyên của nó bằng cách gửi 100 yêu cầu đồng thời, tổng cộng là 10K yêu cầu src/Trình điều khiển/Trình điều khiển gia đình. phpcomposer require runtime/swoole 2Phần kết luận Trong bài viết này, chúng ta đã học cách biến ứng dụng Symfony của bạn thành một image bộ chứa di động với thời gian chạy Swoole của nó. Chúng tôi đã cải thiện hiệu suất của ứng dụng Symfony với Swoole Runtime. Chúng tôi có thể xử lý 10 nghìn yêu cầu trong 1. 182 giây không lỗi. Điều này có nghĩa là gần như thời gian phản hồi tệp tĩnh. Trong bài viết tiếp theo, chúng ta sẽ tìm hiểu cách phục vụ hình ảnh vùng chứa này với nhiều nút với các dịch vụ như máy chủ proxy, postgresql và redis |