![](/img/trans.png)
[英]Docker: How to share the same application code between multiple containers/services (e.g. PHP-FPM and NGINX)
[英]share PHP OPcache between multiple docker containers in the same docker-machine
我正在對接 laravel 堆棧應用程序。
我有一個名為app
的服務,它運行php-fpm
,其中包含 laravel 源代碼。
我想復制這項服務,這樣我就可以從高可用性和零停機時間功能中受益。
我不知道如何處理 OPcache:
app
容器中運行 opache 優化嗎?如果這樣,這種方法會保留大量服務器的 memoryapp
服務的任務(容器)之間共享 opcache?每當腳本編譯時,該進程都會檢查 PHP OPcode 緩存並在共享 memory 上找到已編譯的代碼。 如果找不到代碼,則自動啟動編譯並將其保存到 memory 生成 output 之后。
所以現在我們可以根據上面的 Opcache 流程來討論你的問題
我應該在每個應用程序容器中運行 opcache 優化嗎? 如果是這樣,這種方法會保留大量服務器的 memory
是的,您應該在每個容器中運行 OpCache,因為每個容器都在自己的空間上運行,第二件事它將節省大量容器 memory 否則如果沒有 OpCache,您的容器將在負載過重的情況下無法響應。
Both tests reported about 50% decrease in response time after installing OpCache.
opcache-configuration-to-avoid-caching-suprises
有沒有辦法在同一台 docker 機器上的應用服務的任務(容器)之間共享 opcache?
第一件事一個容器無法訪問另一個沒有高權限的容器的 memory,為此您需要額外的配置,第二件事應該避免這樣做,容器被設計為獨立運行並管理每個容器的單個進程(經驗法則) .
假設這是可能的,這種方法是糾正這類問題還是被認為是反模式?
不,在 Docker 容器中,它不鼓勵並且容器應該解耦。
一般來說,解耦架構是一個復雜工作的框架,它允許組件保持完全自主並且不知道彼此。 雲計算有時被稱為具有解耦架構,因為雲提供商管理物理基礎設施,而不是托管在其上的應用程序或數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.