亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > WEB服務 > 正文

為多個PHP-FPM容器量身打造單一Nginx鏡像的方法

2020-03-22 19:32:52
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了關于為多個PHP-FPM容器量身打造單一Nginx鏡像的方法,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

 

最近我一直在努力部署一套使用Docker容器的PHP微服務。其中一個問題是我們的PHPhtml' target='_blank'>應用程序被設置為與PHP-FPM和Nginx一起工作(而不是這里所說的簡單的Apache/PHP[1]設置),因此每個PHP微服務需要兩個容器(也就是相當于兩個Docker鏡像):

PHP-FPM容器

Nginx容器

假設一個應用運行超過六個PHP微服務,算上你的dev和prod環境,那么最終差不多會產生接近30個容器。我決定構建一個單獨的Nginx Docker鏡像,將PHP-FPM主機名作為環境變量映射到這個鏡像里面獨特的配置文件中,而不是為每個PHP-FPM微服務的鏡像構建獨特的Nginx鏡像。

640


在這篇博客文章中,我將概述我從上述方法1到方法2的過程,最后用介紹如何使用新定制Nginx Docker鏡像的解決方案來結束這篇博客。
我已經將這個鏡像開源GitHub[2],所以如果這剛好是您經常遇到的問題,請隨時查看。

為什么是Nginx?

640

PHP-FPM和Nginx一起使用可以產生更好的PHP應用程序性能[3],但缺點是PHP-FPM Docker鏡像默認沒有像PHP Apache鏡像那樣與Nginx捆綁在一起。
如果您想將Nginx容器連接到PHP-FPM后端,則需要將該后端的DNS記錄添加到您的Nginx配置中。
例如,如果PHP-FPM容器作為名為php-fpm-api的容器運行,那么您的Nginx配置文件應該這樣寫:

nginx location ~ .php$ { fastcgi_split_path_info ^(.+.php)(/.+)$; # This line passes requests through www.dongfan178.com to the PHP-FPM container fastcgi_pass php-fpm-api:9000; fastcgi_index index.php; include fastcgi_params; fastcgi_param www.huayi1.cn/ www.dongfan178.com SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param www.00534.cn PATH_INFO $fastcgi_path_info; }

如果你只服務一個PHP-FPM容器應用,在你的Nginx容器的配置文件中硬編碼對應的名字是可以的。但是,如我上面提到的,每個PHP服務都需要一個對應的Nginx容器,我們就需要運行多個Nginx容器。創建一個新的Nginx鏡像(我們后面必須維護和升級)將是一件痛苦的事情,因為即使管理一堆不同的卷,對于更改單個變量名稱似乎也有很多工作要做。

第一個解決方案:使用Docker文檔里提到的方法envsubst

640

 

起初,我認為這很容易。在Docker文檔中關于如何使用envsubst有一個很好的小章節[4],但不幸的是,這不適用于我的Nginx配置文件:
vhost.conf

nginxserver { listen 80; index index.php index.html; root /var/www/public; client_max_body_size 32M; location / { try_files $uri /index.php?$args; location ~ .php$ { fastcgi_split_path_info ^(.+.php)(/.+)$; fastcgi_pass ${NGINX_HOST}:9000; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info;}

我的vhost.conf文件用到了好幾個Nginx內置的環境變量,結果當我運行Docker文檔里提到的如下命令行時,提示錯誤:$uri和fastcgi_script_name未定義。

shell/bin/bash -c envsubst /etc/nginx/conf.d/mysite.template /etc/nginx/conf.d/default.conf nginx -g daemon off; 

這些變量通常由Nginx本身傳入[5],所以不容易搞清楚他們是什么和怎么進行參數傳遞的,而且這會影響容器的動態可配置性

另一個差點成功的Docker鏡像

640

接下來,我開始搜索不同的Nginx的基礎鏡像。找到了兩個,但是這兩個都是兩年沒有更新了。我從martin/nginx[6]開始,嘗試看看能不能得到一個可以工作的原型。
Martin的鏡像有點不太一樣,因為它要求特定的文件目錄結構。我先在Dockerfile中添加了:

FROM martin/nginx

接下來,我添加了app/空目錄,只包含一個vhost.conf文件的conf/目錄。
vhost.conf

nginxserver { listen 80; index index.php index.html; root /var/www/public; client_max_body_size 32M; location / { try_files $uri /index.php?$args; location ~ .php$ { fastcgi_split_path_info ^(.+.php)(/.+)$; fastcgi_pass $ENV{ NGINX_HOST }:9000; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info;}

這個跟我原始的配置文件差不多,只修改了一行:fastcgi_pass $ENV{ NGINX_HOST }:9000;?,F在當我想要啟動一個Nginx容器和一個叫php-fpm-api的PHP容器的時候,我可以先編譯一個新的鏡像,然后在它運行的時候傳遞給它對應的環境變量:

shelldocker build -t shiphp/nginx-env:test .docker run -it --rm -e NGINX_HOST=php-fpm-api shiphp/nginx-env:test

成功了!但是,這個方法有兩個問題困擾著我:

基礎鏡像版本陳舊,兩年多沒更新了。這可能會造成安全和性能風險。

要求一個app的空目錄似乎沒啥必要,再加上我的文件放在不同的目錄。

最終解決方案

640

我覺得Martin的鏡像是個不錯的自定義方案選擇。所以,我fork了他的倉庫并構建了一個新的并解決了以上兩個問題的Nginx基礎鏡像?,F在,如果你想運行一個伴隨著nginx容器的動態命名后端應用,你只需要簡單地這么做:

shell# Pull down the latest from Docker Hubdocker pull shiphp/nginx-env:latest# Run a PHP container named php-fpm-api docker run --name php-fpm-api -v $(pwd):/var/www php:fpm# Start this NGinx container linked to the PHP-FPM containerdocker run --link php-fpm-api -e NGINX_HOST=php-fpm-api shiphp/nginx-env

如果你想自定義這個鏡像,添加你自己的文件或者Nginx配置文件,只需要像下面這樣擴展你的Dockerfile:

FROM shiphp/nginx-envONBUILD ADD PATH_TO_YOUR_CONFIGS /etc/nginx/conf.d/

現在我所有的PHP-FPM容器都使用單個Nginx鏡像的實例,當我需要升級Nginx、修改權限或者配置一些東西的時候,這讓我的生活變得簡單多了。

以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP !

相關推薦:

PHP緩存區ob的介紹

如何配置php客戶端(phpredis)并連接Redis

使用PHPstudy在Windows服務器下部署PHP系統

以上就是為多個PHP-FPM容器量身打造單一Nginx鏡像的方法的詳細內容,PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品中文在线| 久久99精品久久久久久琪琪| 欧美老女人bb| 亚洲国产精品久久久久秋霞蜜臀| 日韩中文在线中文网三级| 国产一区二区黑人欧美xxxx| 午夜精品久久久久久久久久久久| 精品国产乱码久久久久久虫虫漫画| 97热在线精品视频在线观看| 亚洲一级片在线看| 国产精品伦子伦免费视频| 亚洲国产精品成人一区二区| 热久久99这里有精品| 国产精品入口福利| 韩国v欧美v日本v亚洲| 亚洲视频日韩精品| 欧美猛交免费看| 亚洲精品在线不卡| 日韩毛片在线观看| 日韩国产高清污视频在线观看| 丝袜美腿亚洲一区二区| 亚洲成人黄色在线| 国产精品www网站| 亚洲图片在线综合| 亚洲国产精品久久91精品| 欧美大尺度激情区在线播放| 日本一区二区在线播放| 一区二区欧美久久| 超薄丝袜一区二区| 国产z一区二区三区| 亚洲免费电影一区| 欧美日韩国产精品一区二区三区四区| 色先锋资源久久综合5566| 最近2019中文免费高清视频观看www99| 日本国产欧美一区二区三区| 欧美精品在线看| 日韩精品久久久久| 欧洲亚洲妇女av| 日韩精品在线免费播放| 欧美日韩日本国产| 日本亚洲欧洲色α| 精品毛片三在线观看| 欧美www在线| 国产精品第三页| 国产精品国产福利国产秒拍| 91高清视频在线免费观看| 久久精品亚洲94久久精品| 亚洲va欧美va国产综合久久| 91亚洲永久免费精品| 色99之美女主播在线视频| 亚洲视频国产视频| 久久久亚洲天堂| 97视频在线看| 性色av一区二区三区免费| 欧美激情亚洲国产| 亚洲国产美女精品久久久久∴| 日本不卡高字幕在线2019| 久久精品一区中文字幕| 中文字幕亚洲色图| 91精品啪在线观看麻豆免费| 国产精品第一页在线| 亚洲色图狂野欧美| 一道本无吗dⅴd在线播放一区| 亚洲欧美国产视频| 国产精品视频在线观看| 777777777亚洲妇女| 成人午夜激情网| 亚洲自拍高清视频网站| 国产欧美va欧美va香蕉在| 97久久久免费福利网址| 亚洲欧美999| 欧美中文字幕在线观看| 国产精品久久久久aaaa九色| 亚洲va码欧洲m码| 国产美女91呻吟求| 日韩av中文在线| 久热精品视频在线| 亚洲欧美在线一区二区| 亚洲午夜小视频| 久久久久国产视频| 日韩视频欧美视频| 中文字幕一区二区三区电影| 欧美激情亚洲自拍| 欧美成人久久久| 中文字幕精品www乱入免费视频| 久久99青青精品免费观看| 伊人久久久久久久久久久| 国产精品久久综合av爱欲tv| 欧美网站在线观看| 国产99视频在线观看| 亚洲第一视频在线观看| 国产精品吴梦梦| 97超视频免费观看| 日韩中文字幕久久| 国语自产在线不卡| 国产精品一区二区三区毛片淫片| zzijzzij亚洲日本成熟少妇| 91在线无精精品一区二区| 国产精品九九九| 精品免费在线视频| 日韩欧美在线字幕| 午夜精品视频网站| 欧美电影院免费观看| 成人福利网站在线观看11| 色无极影院亚洲| 亚洲精品资源美女情侣酒店| 精品无人区太爽高潮在线播放| 亚洲va国产va天堂va久久| 尤物精品国产第一福利三区| 这里只有精品久久| 欧美日韩国产影院| 日韩亚洲国产中文字幕| 欧美日韩在线视频首页| 国产日韩欧美在线观看| 亚洲欧美国产精品| 亚洲成人激情视频| 欧美日韩爱爱视频| 夜夜嗨av色一区二区不卡| 欧美大片va欧美在线播放| 亚洲欧美日韩一区二区三区在线| 最近更新的2019中文字幕| 久久亚洲精品国产亚洲老地址| 国产精品久久久久久久9999| 亚洲国产成人精品久久久国产成人一区| 欧美黄色片免费观看| 欧美成人精品h版在线观看| 国产精品久久久久久久av大片| 色樱桃影院亚洲精品影院| 在线视频国产日韩| 久久久91精品国产一区不卡| 国产精品美女在线观看| 亚洲精品国产品国语在线| 国产精品视频久| 日韩网站在线观看| 91高清视频免费观看| 国产成人在线视频| 午夜精品福利电影| 最近中文字幕2019免费| 国产一区二区三区在线观看网站| 欧美韩国理论所午夜片917电影| 久久久久久久久国产精品| 美日韩在线视频| 久久久久免费视频| 91青草视频久久| 久久久人成影片一区二区三区观看| 精品成人av一区| 欧美精品在线第一页| 中日韩美女免费视频网站在线观看| 深夜成人在线观看| 精品久久久在线观看| 日韩一区二区av| 国产成人涩涩涩视频在线观看| xvideos亚洲| 成人av.网址在线网站| 亚洲free性xxxx护士白浆| 国产精品高潮呻吟视频| 欧美主播福利视频| 欧美日韩另类视频| 亚洲色图偷窥自拍| 97精品欧美一区二区三区| 国产女精品视频网站免费| 精品久久久久久| 成人性生交大片免费看小说| 久久久在线观看|