Docker部署nginx+php環境的全過程(簡單可用!)

第一步:安裝Docker

訪問下面地址,根據你的需要下載安裝docker運行環境。

下載docker desktop:https://www.docker.com/

如果你是Windows、macOS(Intel/M1)、Linux桌面OS,都可以下載到對應版本進行安裝,相對命令行方式,更加簡單方便。

安裝完成後,運行docker desktop,顯示如下界面:

在任務欄中會顯示docker的logo,這裡以windows為例。

使用Windows系統下PowerShell或MacOS下終端.app,在命令行輸入

$ docker -v

如果docker運行環境安裝成功,將顯示當前Docker的版本號。

第二步:安裝Nginx

使用docker pull命令,在線拉取nginx鏡像,如果沒有特殊版本需求,可直接輸入nginx:latest

$ docker pull nginx:latest

在docker desktop上,可以點擊images選項進行查看,鏡像是否拉取成功。

 也可以通過命令行進行查看:

$ docker images

第三步:安裝PHP

這裡我們選擇7.4版本的php,如果沒有版本需求,也可以輸入php:latest

$ docker pull php:7.4-fpm

第四步:啟動PHP容器

$ docker run --name myphp-fpm -v /docker/nginx/www:/www -d ef0ed3bc573e

其中,myphp-fpm是我給php容器起的名字,/docker/nginx/www是我在本地創建的一個文件目錄,用來對應docker的www,ef0ed3bc573e是php的鏡像ID。

容器啟動正常,在docker desktop的Containers選項中可以看到如下記錄,Status顯示running,代表容器啟動成功。

也可以使用命令行來查看

$ docker ps

第五步:啟動Nginx容器並關聯PHP,這一步很重要。

網上關於這一方面的介紹很多,但是很多描述的不清晰,對最新版本的兼容也不是很好。

$ docker run –name nginx -p 8080:80 -d -v /docker/nginx/www:/usr/share/nginx/html -v /docker/nginx/conf/conf.d:/etc/nginx/conf.d –link myphp-fpm:php nginx:latest

$ docker run --name nginx -p 8080:80 -d -v /docker/nginx/www:/usr/share/nginx/html -v /docker/nginx/conf/conf.d:/etc/nginx/conf.d --link myphp-fpm:php nginx:latest

這裡要說明一下,筆者也是試過很多次才正常運行的,如果這一步操作不對,那麼PHP就無法真長使用。

其中nginx是我起的nginx容器的名字

8080:80代表,通過瀏覽器訪問8080端口,在docker中對應的是80端口

/docker/nginx/www是本地的掛載目錄,windows下也可以c:/docker/…加上盤符,/usr/share/nginx/html是nginx默認的網頁root路徑

/docker/nginx/conf/conf.d是本地的掛載目錄,對應的nginx路徑是/etc/nginx/conf.d,這個文件夾主要用於存放default.conf配置文件。

–link myphp-fpm:php 這個參數很重要,代表運行nginx的時候要關聯php容器。

很多朋友在嘗試該步操作的時候,會出現很多各種各樣的錯誤,例如缺少參數,容器運行失敗等等。以上示例,請大傢參考。

執行結果:

容器運行狀態:

第六部:復制配置文件和網頁文件到nginx容器中。

執行到這一步,雖然nginx和php容器都已經運行正常瞭,但是你通過瀏覽器訪問還是404。

原因在於nginx容器中沒有default.conf和index.php文件。所以,最後一步就是cp這兩個文件到nginx容器的制定目錄下,然後再重啟nginx容器。

$ docker cp /docker/nginx/www/index.php nginx:/usr/share/nginx/html
$ docker cp /docker/nginx/conf/conf.d/default.conf nginx:/etc/nginx/conf.d

這裡給出index.php的內容:

<?php
    echo phpinfo();
?>

和default.conf的內容:

server {
    listen       80;
    server_name  localhost;
 
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm index.php;
    }
 
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
 
#fastcgi_pass 127.0.0.1:9000
    location ~ \.php$ {
        fastcgi_pass   myphp-fpm:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /www/$fastcgi_script_name;
        include        fastcgi_params;
    }
}

最後通過瀏覽器訪問:

http://localhost:8080或者http://127.0.0.1:8080

至此,大功告成!

總結

到此這篇關於Docker部署nginx+php環境的文章就介紹到這瞭,更多相關Docker部署nginx+php環境內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: