本文nginx 運行在主機上(不在docker容器中),而php-fpm 配置在docker容器中,
最終效果就是在電腦瀏覽器中訪問 本機的nginx ,只要是php請求都轉發到 3個容器中,
而且容器啟動帶上了環境變數,每個容器的應用都可以獲取到屬于自己的應用標識,
1.安裝docker 和 開啟3個php-fpm 容器,
windows docker 安裝程序就略了,不會的自行百度,
docker 安裝好了
先設定 獲取 docker鏡像服務器地址,

這里可以加速,
設定好了以后 開一個windows 的cmd 程式 執行指令:
docker pull registry.cn-hangzhou.aliyuncs.com/1221/huangweigang:huang7
這個是我自己制作的鏡像 ,相對網上通用的php8-fpm的鏡像,我的鏡像做了如下新增操作,
1.新增了 apt-get update 指定的更新資料源 從阿里云獲取,這樣裝軟體更快
2.裝上了vim 工具命令 (拉取的 別人的php8-fpm 容器 是不支持vim 命令的,當然別人是為了讓鏡像更小)
3. php-fpm 的位置檔案www.conf 里面 listen = unix:/tmp/php-cgi.sock; 改成了listen:127.0.0.7:9000 ,因為不是在容器內呼叫php-fpm 是在容器外,所以得改,我的容器只做個php決議器,
當然網友也可以不用我的鏡像,直接去網上找 php8-fpm的鏡像,然后自己設定,
拉取鏡像后 用 命令:
docker images
查看 鏡像的id ,然后用命令 開啟3個docker容器
docker run -d --name php8-1 -p 9011:9000 -v C:/Users/Administrator/Documents/Kitematic/php72/var/www/html1:/mydata -e hid=3 e77f01937c11
docker run -d --name php8-2 -p 9012:9000 -v C:/Users/Administrator/Documents/Kitematic/php72/var/www/html2:/mydata -e hid=3 e77f01937c11
docker run -d --name php8-3 -p 9013:9000 -v C:/Users/Administrator/Documents/Kitematic/php72/var/www/html3:/mydata -e hid=3 e77f01937c11
啟動容器,
這個命令我解釋下
引數-d ,--name就不解釋了 都知道,
-p 9012:9000 ,9012是 主機埠(本機的nginx 負載均衡訪問的就是這個埠),就是windows電腦的埠,等于 docker 容器暴露出來埠,9000 指的是容器內部的埠,
-v C:/Users/Administrator/Documents/Kitematic/php72/var/www/html1:/mydata 表示將本地電腦的 C:/Users/Administrator/Documents/Kitematic/php72/var/www/html1 目錄映射到容器里面的目錄/mydata ,這樣你修改腳本在windows 直接修改即可,不用進入容器內用linux命令操作,方便,
-e hid=3 傳入環境變數,等于是應用id ,php 可以通過函式getenv(‘hid’) ,獲取,方便應用根據這個應用id 獲取屬于應用自己的應用配置,
最后一個 e77f01937c11 就是鏡像id 了 每個人不一樣,你拉取的鏡像是什么id 就是這個,
2,下載nginx 配置 , 如何下載就省略了,現在主要講配置,我這里是用phpstudy做的集成環境一部到位,
我在php_study 里面創建了一個網站,www.huangse.com (當然要修改windows 的host檔案才能訪問)
修改nginx.conf檔案
在 server上面加上
upstream upstream_name{
server 127.0.0.1:9011;#這個就是docker容器1
server 127.0.0.1:9012;#這個就是docker容器2
server 127.0.0.1:9013;#這個就是docker容器3
}
我開了3個容器, 里面都運行著 php-fpm
修改 網站的 nginx組態檔,注意紅色字體,
server {
listen 80;
server_name www.huangse.com;
location / {
index index.php index.html error/index.html;
error_page 400 /error/400.html;
error_page 403 /error/403.html;
error_page 404 /error/404.html;
error_page 500 /error/500.html;
error_page 501 /error/501.html;
error_page 502 /error/502.html;
error_page 503 /error/503.html;
error_page 504 /error/504.html;
error_page 505 /error/505.html;
error_page 506 /error/506.html;
error_page 507 /error/507.html;
error_page 509 /error/509.html;
error_page 510 /error/510.html;
autoindex off;
}
location ~ \.php(.*)$ {
root "/mydata/";
#fastcgi_pass 127.0.0.1:9011;
fastcgi_pass upstream_name;
fastcgi_index index.php;
fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
fastcgi_param SCRIPT_FILENAME /mydata/$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
include fastcgi_params;
}
error_log C:/phpstudy_pro/Extensions/Nginx1.15.11/logs/www.huangse.com_error.log crit;
access_log C:/phpstudy_pro/Extensions/Nginx1.15.11/logs/www.huangse.com_acess.log;
}
然后分別在 路徑 C:/Users/Administrator/Documents/Kitematic/php72/var/www/html1,C:/Users/Administrator/Documents/Kitematic/php72/var/www/html2,C:/Users/Administrator/Documents/Kitematic/php72/var/www/html3,里面放入檔案a.php,a.php代碼就寫這個,列印出應用id,

使用瀏覽器訪問,可以看到 這個數字 從 1 2 3 反復,每次重繪都不一樣,

推薦一個docker 可視化管理軟體,Kitematic.
下載后安裝到windows ,是個客戶端軟體,效果如下,可以看到管理的容器數量,還有容器配置的引數,非常方便,

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/304710.html
標籤:其他
