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

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

https. //www. người đóng tàu. com/resources/what-container/

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à

Bé nhỏ. Giản dị. Chắc chắn. Alpine Linux là một bản phân phối Linux nhẹ, hướng đến bảo mật dựa trên musl libc và busybox

Docker mô tả Alpine là

Chúng tôi đề xuất hình ảnh Alpine vì nó được kiểm soát chặt chẽ và có kích thước nhỏ [hiện dưới 6 MB], trong khi vẫn là một bản phân phối Linux đầy đủ

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ọng

Tô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ụ Docker

Docker 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ở PHP
  • Hình ảnh vùng chứa ứng dụng

Hình ảnh bộ chứa cơ sở PHP

Chú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ại

Mỗi hướng dẫn tạo một lớp

  • composer require runtime/swoole
    4 tạo một lớp từ hình ảnh Docker
    composer require runtime/swoole
    5
  • Hướng dẫn
    composer require runtime/swoole
    6 sẽ thực thi bất kỳ lệnh nào trong một lớp mới trên cùng của hình ảnh hiện tại và cam kết kết quả
  • Lệnh
    composer require runtime/swoole
    7 sao chép các tệp hoặc thư mục mới từ
    composer require runtime/swoole
    0 và thêm chúng vào hệ thống tệp của bộ chứa tại đường dẫn
    composer require runtime/swoole
    1
  • Lệnh
    composer require runtime/swoole
    2 đặt biến môi trường
    composer require runtime/swoole
    3 thành giá trị
    composer require runtime/swoole
    4
  • Lệnh
    composer require runtime/swoole
    5 thiết lập thư mục làm việc cho bất kỳ lệnh
    composer require runtime/swoole
    6,
    composer require runtime/swoole
    7,
    composer require runtime/swoole
    8,
    composer require runtime/swoole
    7 và
    docker run -itd --rm --name symfony-example -p 9000:80 --env-file .env thecaliskan/symfony-swoole-docker-example
    0 nào theo sau nó trong
    composer require runtime/swoole
    3
  • Hướng dẫn
    docker run -itd --rm --name symfony-example -p 9000:80 --env-file .env thecaliskan/symfony-swoole-docker-example
    2 thông báo cho Docker rằng bộ chứa lắng nghe trên các cổng mạng được chỉ định khi chạy
  • composer require runtime/swoole
    8 chỉ định lệnh nào sẽ chạy trong vùng chứa

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 đầu

người giám sát. d/app-swoole. ban đầu

người giám sát. d/ứng dụng-cron. ban đầu

Xâ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
  • Tên người dùng trung tâm Docker. thecaliskan
  • Tên vùng chứa. symfony-swoole-docker
  • Tên thẻ [như chi nhánh]. muộn nhất

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 Hub

Tự động xây dựng và xuất bản

github/quy trình công việc/ci. yml

Bạ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 Marketplace

GitHub 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ụng

Bâ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
3

hướng dẫn xây dựng

  • Bước đầu tiên, tạo một lớp từ hình ảnh Docker
    docker run -itd --rm --name symfony-example -p 9000:80 --env-file .env thecaliskan/symfony-swoole-docker-example
    6
  • Bước thứ hai, chúng tôi sẽ sao chép các tệp dự án vào hình ảnh
  • Bước thứ ba, chúng tôi sẽ cài đặt các gói soạn nhạc

Dockerfile

Thời gian chạy len

Chú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ự án

composer 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ình

cô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ư sau

crontab

Tự động xây dựng và xuất bản

github/quy trình công việc/ci. yml

Chú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ụng

Chạ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

Tài liệu tham khảo chạy docker
docker run -itd --rm --name symfony-example -p 9000:80 --env-file .env thecaliskan/symfony-swoole-docker-example

Chạy bộ chứa Docker

Kiểm tra máy chủ

Bạn có thể dừng container bằng đoạn mã sau

composer require runtime/swoole
8

Hì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

Thống kê vùng chứa trước khi kiểm tra

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. php
composer require runtime/swoole
2

kết quả điểm chuẩn

Thống kê container sau khi kiểm tra

Phầ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

Chủ Đề