目錄
Docker 安裝 PHP
Docker 安裝 Nginx?
?編輯運(yùn)行nginx容器
nginx安裝成功
Nginx + PHP 部署PHP項(xiàng)目
啟動(dòng) PHP:?
啟動(dòng) nginx:
查看正在運(yùn)行的容器:?
訪問域名測(cè)試搭建結(jié)果
Docker相關(guān)命令描述
Docker 安裝 PHP
- 這里我們拉取官方的鏡像,標(biāo)簽為7.1-fpm?
docker pull php:7.1-fpm
?等待下載完成后,我們就可以在本地鏡像列表里查到REPOSITORY為php,標(biāo)簽為7.1-fpm的鏡像。
Docker 安裝 Nginx?
?訪問 Nginx 鏡像庫(kù)地址:?Docker。
可以通過 Sort by 查看其他版本的 Nginx,默認(rèn)是最新版本?nginx:latest。?
- 這里我們拉取官方的最新版本的鏡像:?
docker pull nginx:latest
- ?使用以下命令來查看是否已安裝了 nginx:
運(yùn)行nginx容器
- 安裝完成后,我們可以使用以下命令來運(yùn)行 nginx 容器:
docker run --name nginx-test -p 8080:80 -d nginx
參數(shù)說明:
- --name nginx-test:容器名稱。
- -p 8080:80: 端口進(jìn)行映射,將本地 8080 端口映射到容器內(nèi)部的 80 端口。
- -d nginx: 設(shè)置容器在在后臺(tái)一直運(yùn)行
?
nginx安裝成功
- 最后我們可以通過瀏覽器可以直接訪問 8080 端口的 nginx 服務(wù):?
Nginx + PHP 部署PHP項(xiàng)目
啟動(dòng) PHP:?
docker run --name myphp-fpm -p 9000:9000 -v /var/www/blog:/www -d php:7.1-fpm
命令說明:
--name myphp-fpm?: 將容器命名為 myphp-fpm。
-v /var/www/blog:/www : 將主機(jī)中PHP項(xiàng)目目錄掛載到容器的 /www目錄,在容器內(nèi)訪問 /www 就相當(dāng)于訪問宿主機(jī)的 /var/www/blog
php:7.1-fpm
?鏡像名
- 創(chuàng)建一個(gè)存放nginx配置文件的目錄。這個(gè)目錄等下要掛載到容器里。
mkdir -p /opt/docker/nginx/conf.d
?
- 創(chuàng)建一個(gè)空配置文件
vim testdocker.conf
- ?在該目錄下添加 /opt/docker/nginx/conf.d/testdocker.conf?文件,內(nèi)容如下:
server {
# 監(jiān)聽端口。此端口不能被占用了
listen 80;
# 此站點(diǎn)的域名。直接在宿主機(jī)配置一個(gè)host域名,或者在阿里云等云服務(wù)商那里解析過來。
server_name www.testdocker.com;
# 此站點(diǎn)的入口目錄。這里要注意,/www/public/ 路徑是容器內(nèi)的路徑。因?yàn)榈认聲?huì)把宿主機(jī)的項(xiàng)目路徑掛載到容器內(nèi)的 /www 目錄。所以這里訪問 /www就相當(dāng)于訪問宿主機(jī)的項(xiàng)目路徑。
root /www/public/;
#配置url的偽靜態(tài)設(shè)置
location / {
autoindex off;
if (!-e $request_filename){
rewrite ^/(.*)$ /index.php?/$1 last; break;
}
#偽靜態(tài)設(shè)置
try_files $uri $uri/ /index.php$is_args$query_string;
index index.php index.html index.htm;
}
#配置url處理及轉(zhuǎn)發(fā)PHP請(qǐng)求
location ~ \.php(/|$) {
# 入口文件
fastcgi_index index.php;
# PHP項(xiàng)目的IP和端口。這是php-fpm的地址。由于nginx處理不了PHP代碼,所以需要把請(qǐng)求轉(zhuǎn)發(fā)給php-fpm進(jìn)行處理。
fastcgi_pass 10.10.10.68:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# 用戶的訪問日志。注意,這目錄必須存在,否則nginx將啟動(dòng)不了。由于我把宿主機(jī)的項(xiàng)目路徑www掛載到了容器內(nèi)的/www目錄,所以宿主機(jī)的項(xiàng)目路徑www里需要有wwwlogs目錄。
access_log /var/log/nginx/docker_nginx_access.log;
# 錯(cuò)誤日志
error_log /var/log/nginx/docker_nginx_error.log;
}
配置文件說明:
- 10.10.10.68:9000:表示 php-fpm 服務(wù)的 URL,下面我們會(huì)具體說明。
- root? /www/public/:項(xiàng)目的根目錄,這里之所以寫成( /www/public),是因?yàn)樵趩?dòng)PHP時(shí),已經(jīng)將項(xiàng)目的根目錄(/var/www/blog)掛載到容器內(nèi)的/www目錄了
啟動(dòng) nginx:
docker run --name my-nginx -p 80:80 -d -v /var/www/blog:/www -v /opt/docker/nginx/conf.d:/etc/nginx/conf.d nginx
- -v /var/www/blog:/www 把宿主機(jī)的項(xiàng)目目錄 /var/www/blog 掛載到容器內(nèi)的 /www 目錄。容器內(nèi)訪問 /www 就相當(dāng)于訪問 /var/www/blog
- -v /opt/docker/nginx/conf.d:/etc/nginx/conf.d 把宿主機(jī)的配置目錄,掛載到容器內(nèi)nginx的配置目錄。nginx 會(huì)自動(dòng)去加載這目錄內(nèi)所有的配置文件。/opt/docker/nginx/conf.d 里建議每個(gè)站點(diǎn)對(duì)應(yīng)一個(gè)配置文件。
- -d 后臺(tái)靜默運(yùn)行
查看正在運(yùn)行的容器:?
- 真確的結(jié)果如下圖(圖一):
- 錯(cuò)誤的結(jié)果如下圖(圖二):
- 圖一和圖二的區(qū)別:
圖一端口(9000)生效,圖二端口(9000)沒生效,如果php-fpm沒有端口,最后導(dǎo)致的結(jié)果就是,客戶端通過域名訪問項(xiàng)目,在通過nginx請(qǐng)求php-fpm時(shí)會(huì)提示:502
nginx錯(cuò)誤提示是:connect() failed (111: Connection refused) while connecting to upstream
訪問域名測(cè)試搭建結(jié)果
文章來源:http://www.zghlxwxcb.cn/news/detail-823278.html
Docker相關(guān)命令描述
docker container attach 附加到正在運(yùn)行的容器 docker container commit 從容器的更改創(chuàng)建一個(gè)新的映像 docker container cp 在容器和本地文件系統(tǒng)之間復(fù)制文件/文件夾 docker container create 創(chuàng)建一個(gè)新的容器 docker container diff 檢查容器文件系統(tǒng)上文件或目錄的更改 docker container exec 在運(yùn)行容器中運(yùn)行命令 docker container export 將容器的文件系統(tǒng)導(dǎo)出為tar存檔 docker container inspect 顯示一個(gè)或多個(gè)容器的詳細(xì)信息 docker container kill 殺死一個(gè)或多個(gè)運(yùn)行容器 docker container logs 獲取容器的日志 docker container ls 列出容器 docker container pause 暫停一個(gè)或多個(gè)容器內(nèi)的所有進(jìn)程 docker container port 列出端口映射或容器的特定映射 docker container prune 取出所有停止的容器 docker container rename 重命名容器 docker container restart 重新啟動(dòng)一個(gè)或多個(gè)容器 docker container rm 刪除(移除)一個(gè)或多個(gè)容器 docker container run 在新容器中運(yùn)行命令 docker container start 啟動(dòng)一個(gè)或多個(gè)停止的容器 docker container stats 顯示容器的實(shí)時(shí)流資源使用統(tǒng)計(jì)信息 docker container stop 停止一個(gè)或多個(gè)運(yùn)行容器 docker container top 顯示容器的正在運(yùn)行的進(jìn)程 docker container unpause 取消暫停一個(gè)或多個(gè)容器內(nèi)的所有流程 docker container update 更新一個(gè)或多個(gè)容器的配置 docker container wait 阻止一個(gè)或多個(gè)容器停止,然后打印退出代碼以上命令中的 container 可以省略不寫,
例如命令:docker container stop 容器ID/容器名稱 等同 docker stop 容器ID/容器名稱文章來源地址http://www.zghlxwxcb.cn/news/detail-823278.html
到了這里,關(guān)于Docker搭建PHP運(yùn)行環(huán)境的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!