最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

centos docker容器化部署nginx php項(xiàng)目實(shí)踐

 更新時(shí)間:2025年06月04日 08:50:39   作者:若水印象  
這篇文章主要介紹了centos docker容器化部署nginx php項(xiàng)目實(shí)踐,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

一、nginx和php的一些原理

1、nginx 是一個(gè) web 服務(wù)器,它只能處理靜態(tài)文件,無法處理 PHP Python 等具體程序語言的請求。所以,原理是這樣,用戶統(tǒng)一先請求到 nginx,nginx 會(huì)再把請求轉(zhuǎn)發(fā)給 php-fpm。

2、php-fpm是處理 PHP 請求的一個(gè)東西,實(shí)現(xiàn)了 FastCGI 協(xié)議的一個(gè)東西,它叫PHP FastCGI 管理器。

3、 FastCGI 是什么?是一種與 Web 服務(wù)器通信的協(xié)議,規(guī)定了要傳什么數(shù)據(jù),具體什么格式。

二、前提條件

centos,安裝了docker環(huán)境,當(dāng)然你也可以安裝寶塔,他倆不沖突,寶塔里可以方便的看到docker的一些東西。

php 鏡像有fpm和cli兩個(gè)版本。php-cli是命令行版本,而php-fpm是作為apache或者nginx等服務(wù)器軟件處理PHP文件的擴(kuò)展。這里選擇fpm。

三、下載php和nginx鏡像

docker pull nginx
docker pull php:8.0-fpm

四、創(chuàng)建并運(yùn)行PHP容器

mkdir -p /docker/www
docker run --name php8.0 -p 9000:9000 -v /docker/www:/www -d php:8.0-fpm
  • --name php8.0 給容器取個(gè)名字 
  • -p 9000:9000 php容器的端口默認(rèn)是9000,映射到宿主機(jī)的9000端口 
  • -v /docker/www:/www 把宿主機(jī)的PHP源代碼目錄 /docker/www 掛載到容器內(nèi)的 /www。未來在容器內(nèi)訪問 /www 就相當(dāng)于訪問宿主機(jī)的 /docker/www,容器的刪除不會(huì)影響到源代碼。-d 后臺(tái)靜默運(yùn)行 
  • php:8.0-fpm 鏡像名

如:報(bào)錯(cuò)

Error response from daemon: driver failed programming external connectivity on endpoint XXX(端口映射或啟動(dòng)容器時(shí)報(bào)錯(cuò))

解決方法:輸入指令 systemctl restart docker 重啟docker服務(wù)及可重新生成自定義鏈DOCKER

查php容器在docker的內(nèi)網(wǎng)地址

docker inspect 獲取Docker容器或者Docker鏡像的元數(shù)據(jù)

docker inspect --format='{{.NetworkSettings.IPAddress}}' php8.0

我的是172.17.0.2,這個(gè)如果你安裝了寶塔的話也可以再寶塔里看到,這個(gè)ip下邊要用。

也可以直接通過查看元數(shù)據(jù)里的IPAddress字段來獲取ip

docker inspect php8.0 

五、創(chuàng)建并運(yùn)行nginx容器

1、 創(chuàng)建一個(gè)存放配置文件的目錄。這個(gè)目錄等下要掛載到容器里。

mkdir -p /docker/nginx/conf.d

2、 進(jìn)入目錄并創(chuàng)建一個(gè)配置文件,并在里面填入如下內(nèi)容。比如 vim siyucms.com.conf,一個(gè)站點(diǎn)一個(gè)配置文件。

# 服務(wù)端配置節(jié)點(diǎn)
server {
    # 監(jiān)聽端口。此端口不能被占用了
    listen       80;
    # 此站點(diǎn)的域名,多個(gè)用空格隔開(注意localhost是本機(jī)的意思,你可以刪掉)
    server_name  www.siyucms.com siyucms.com localhost;
    # 此站點(diǎn)的入口目錄。這里要注意,這是當(dāng)前容器內(nèi)的路徑。訪問 /www就相當(dāng)于訪問宿主機(jī)的項(xiàng)目路徑/docker/www。
    root  /www/01_siyucms_com/public;
    # 入口目錄里可識(shí)別的入口文件
    index index.php index.html index.htm default.php default.htm default.html;
    
	# Thinkphp的偽靜態(tài)設(shè)置
    location / {
        #訪問路徑的文件不存在則重寫URL轉(zhuǎn)交給ThinkPHP處理
        if (!-e $request_filename) {
            rewrite  ^(.*)$  /index.php?s=$1  last;   break;
        }
    }
    
    # 配置url,圖片等資源文件
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
    	# 緩存100天
        expires 100d;
        # 不寫日志
        error_log /dev/null;
        access_log off; 
    }
    # 配置url,前端的js css資源文件
    location ~ .*\.(js|css)?$ {
        expires 12h;
        error_log /dev/null;
        access_log off; 
    }
    
     # 配置url,處理及轉(zhuǎn)發(fā)PHP請求
    location ~ \.php(/|$) {
        # 入口文件
        fastcgi_index index.php;
        # PHP項(xiàng)目的IP和端口。這是php-fpm的地址。由于nginx處理不了PHP代碼,所以需要把請求轉(zhuǎn)發(fā)給php-fpm進(jìn)行處理。
        fastcgi_pass  172.17.0.2: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  /www/wwwlogs/siyucms.com.log;
    # 錯(cuò)誤日志
    error_log  /www/wwwlogs/siyucms.com.error.log;
}

創(chuàng)建并啟動(dòng) nginx 容器

docker run --name nginx -p 80:80 -d -v /docker/www:/www -v /docker/nginx/conf.d:/etc/nginx/conf.d nginx
  • -v /docker/www:/www 把宿主機(jī)的源碼目錄 /docker/www 掛載到容器內(nèi)的 /www 目錄。容器內(nèi)訪問 /www 就相當(dāng)于訪問 /docker/www
  • -v /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è)配置文件。

六、驗(yàn)證

1、docker ps -a 看是否運(yùn)行了剛才的兩個(gè)容器

2、/docker/www/01_siyucms_com 目錄里上傳ThinkPHP的最新代碼

3、訪問你的域名或IP看是否可以訪問。注意我綁定了三個(gè)域名,localhost可以讓我通過ip直接訪問到

七、鏈接宿主機(jī)mysql

只需要注意ip不是127.0.0.1就可以了,ip為172.17.0.1

感興趣的可以了解另一篇文章:Docker容器的程序連接宿主機(jī)的MySQL

八、安全

9000端口暴露很危險(xiǎn),需要修改為不暴露到公網(wǎng)上,只暴露內(nèi)網(wǎng)就可以了

宿主機(jī)nginx鏈接docker的php

當(dāng)前為寶塔面板安裝了php和nginx,現(xiàn)在需要docker安裝新的php環(huán)境

1、首先通過寶塔面板添加一個(gè)網(wǎng)站,并測試是否可訪問,網(wǎng)站目錄為

www/wwwroot/www_siyucms_com

可通過docker里添加容器,也可直接命令行里添加容器,這里為了方便把網(wǎng)站目錄掛載到docker同目錄

docker run --name php8.0 -p 9000:9000 -v /www/wwwroot/www_siyucms_com:/www/wwwroot/www_siyucms_com -d php:8.0-fpm

2、找到docker容器的局域網(wǎng)IP,參考上邊,也可直接通過寶塔面板看到

3、寶塔中設(shè)置這個(gè)網(wǎng)站的php版本為自定義并修改鏈接配置為 172.18.0.2:9000 或者 127.0.0.1:9001,這里需要注意,如果寫127.0.0.1則是你當(dāng)前宿主機(jī)鏈接到docker的端口,也可以直接寫docker的局域網(wǎng)ip和開放的端口

4、通過ifconfig命令獲取到宿主機(jī)mysql的ip并修改鏈接mysql的地址為172.18.0.1

5、設(shè)置一下mysql的訪問權(quán)限,寶塔面板中設(shè)置mysql這個(gè)數(shù)據(jù)的權(quán)限,為指定ip,通過逗號(hào)分割

172.18.0.3,1270.0.1

6、設(shè)置runtime unplad目錄等的權(quán)限為777

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • docker默認(rèn)路徑存儲(chǔ)不足解決過程

    docker默認(rèn)路徑存儲(chǔ)不足解決過程

    這篇文章主要給大家介紹了關(guān)于docker默認(rèn)路徑存儲(chǔ)不足的解決過程,Docker存儲(chǔ)空間不足的錯(cuò)誤通常表明Docker Daemon分配的本地磁盤空間用盡,文中通過代碼將解決的辦法介紹的非常詳細(xì),需要的朋友可以參考下
    2024-04-04
  • Docker?Desktop磁盤鏡像位置用途超詳細(xì)解析

    Docker?Desktop磁盤鏡像位置用途超詳細(xì)解析

    這篇文章主要介紹了Docker?Desktop磁盤鏡像位置用途的相關(guān)資料,Docker?Desktop中docker_data.vhdx虛擬磁盤的作用,用于存儲(chǔ)容器、鏡像、卷等數(shù)據(jù),文中介紹的非常詳細(xì),需要的朋友可以參考下
    2025-06-06
  • CentOS7使用docker部署Apollo配置中心的實(shí)現(xiàn)

    CentOS7使用docker部署Apollo配置中心的實(shí)現(xiàn)

    這篇文章主要介紹了CentOS7使用docker部署Apollo配置中心的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • spring-boot構(gòu)建docker鏡像上傳倉庫的示例教程

    spring-boot構(gòu)建docker鏡像上傳倉庫的示例教程

    這篇文章主要介紹了spring-boot構(gòu)建docker鏡像上傳倉庫,受限創(chuàng)建一個(gè)簡單spring-boot-web項(xiàng)目,查看鏡像上傳倉庫這時(shí)候有兩種解決方案,對(duì)docker鏡像上傳倉庫相關(guān)知識(shí)感興趣的朋友跟隨小編一起看看吧
    2022-12-12
  • Docker安裝部署RabbitMQ的實(shí)現(xiàn)步驟

    Docker安裝部署RabbitMQ的實(shí)現(xiàn)步驟

    RabbitMQ是一款開源的消息隊(duì)列中間件,能夠在分布式系統(tǒng)中實(shí)現(xiàn)可靠的消息傳遞,本文主要介紹了Docker安裝部署RabbitMQ的實(shí)現(xiàn)步驟,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-10-10
  • docker磁盤空間清理的解決辦法

    docker磁盤空間清理的解決辦法

    前段時(shí)間遇到docker磁盤空間太少,無法寫入數(shù)據(jù)的問題。本文就來介紹一下docker磁盤空間清理的解決辦法,感興趣的可以了解一下
    2021-06-06
  • Docker 配置網(wǎng)絡(luò)使用bridge網(wǎng)絡(luò)的方法

    Docker 配置網(wǎng)絡(luò)使用bridge網(wǎng)絡(luò)的方法

    本篇文章主要介紹了Docker 配置網(wǎng)絡(luò)使用 bridge 網(wǎng)絡(luò)的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-03-03
  • 在Docker中安裝Elasticsearch7.6.2的教程

    在Docker中安裝Elasticsearch7.6.2的教程

    這篇文章主要介紹了在Docker中安裝Elasticsearch7.6.2的教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • 兩種方式創(chuàng)建docker鏡像的啟動(dòng)容器時(shí)區(qū)別介紹(總結(jié)篇)

    兩種方式創(chuàng)建docker鏡像的啟動(dòng)容器時(shí)區(qū)別介紹(總結(jié)篇)

    這篇文章主要介紹了基于兩種創(chuàng)建docker鏡像的啟動(dòng)容器時(shí)區(qū)別總結(jié),第一種凡是用docker commit生成的鏡像啟動(dòng)的時(shí)候可以加載一個(gè)啟動(dòng)自己應(yīng)用的腳本,第二種用Docfile文件生成的鏡像時(shí),來啟動(dòng)容器就不用再加這個(gè)腳本了,具體詳情一起通過本文學(xué)習(xí)吧
    2016-10-10
  • 使用Docker registry鏡像創(chuàng)建私有倉庫的方法

    使用Docker registry鏡像創(chuàng)建私有倉庫的方法

    本篇文章主要介紹了使用Docker registry鏡像創(chuàng)建私有倉庫的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-04-04

最新評(píng)論

洱源县| 寿阳县| 长葛市| 泾川县| 永新县| 济南市| 钟山县| 宝坻区| 突泉县| 曲阜市| 焦作市| 万宁市| 罗甸县| 桦川县| 江口县| 凤翔县| 宽甸| 永济市| 江城| 隆回县| 绥阳县| 日喀则市| 乐平市| 缙云县| 睢宁县| 和林格尔县| 白玉县| 南澳县| 惠东县| 黎川县| 丰县| 荥阳市| 江城| 云南省| 建平县| 旬阳县| 修武县| 中西区| 虹口区| 门源| 新田县|