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

PHP項(xiàng)目在Docker(WSL2)中運(yùn)行緩慢的解決方法

 更新時(shí)間:2023年09月05日 10:28:03   作者:自由de單車  
最近在使用Docker容器運(yùn)行PHP項(xiàng)目的時(shí)候,發(fā)現(xiàn)特別緩慢,例如一個(gè)干凈的?ThinkPHP?5.1?框架,訪問首頁都需要1秒以上,如果再加上數(shù)據(jù)庫查詢、復(fù)雜的業(yè)務(wù)邏輯等代碼的話,那速度可想而知,所以本文就給大家介紹了解決方法,需要的朋友可以參考下

環(huán)境

Windows 11

Docker Desktop 4.17.1(開啟WSL2)

WSL2(Ubuntu-22.04)

前言

最近在使用Docker容器運(yùn)行PHP項(xiàng)目的時(shí)候,發(fā)現(xiàn)特別緩慢。例如一個(gè)干凈的 ThinkPHP 5.1 框架,訪問首頁都需要1秒以上,如果再加上數(shù)據(jù)庫查詢、復(fù)雜的業(yè)務(wù)邏輯等代碼的話,那速度可想而知。

我的開發(fā)模式是,在Windows上使用 IDE 開發(fā),代碼也是存儲(chǔ)在Windows系統(tǒng)上,然后docker通過掛載的方式,將代碼目錄掛載到容器里去運(yùn)行。

后面查資料得知,是因?yàn)镈ocker是跑在 WSL2 里的,雖說 WSL2 相比 WSL1 更先進(jìn),但在跨系統(tǒng)文件讀寫性能方面是比 WSL1 差的,因此,跑在 WSL2 里的docker想要跨系統(tǒng)訪問Windows系統(tǒng)上的代碼文件的話,性能是很差的。

解決方法

第一種方法

讓docker不要使用WSL2,改為使用WSL1。方法很簡單,在設(shè)置里面關(guān)閉 WSL2 就可以:

在這里插入圖片描述

但正如圖中描述所說,Windows Home版本只能使用 WSL2,不支持WSL1,我的正好是Home版本,因此這種方法行不通。

第二種方法

既然問題起因是跨系統(tǒng)文件讀寫性能差,那么我們不要跨系統(tǒng)讀寫不就可以了?

所以我不再把代碼存儲(chǔ)在Windows系統(tǒng)上,改為存儲(chǔ)在 WSL2 上。

1)首先要安裝一個(gè)WSL系統(tǒng),我選擇的是Ubuntu 22.04,在Microsoft Store中搜索Ubuntu安裝就可以:

在這里插入圖片描述

因?yàn)槲乙呀?jīng)安裝好了,所以圖片中顯示的是“已擁有”。

2)在Docker Desktop中開啟WSL集成功能,并重啟Docker:

在這里插入圖片描述

開啟WSL集成功能后,我們就可以在Ubuntu里使用docker命令了。

3)進(jìn)入U(xiǎn)buntu shell命令行界面,如下圖所示,搜索ubuntu,點(diǎn)擊就可以:

在這里插入圖片描述

或者在Powershell中執(zhí)行 wsl -d Ubuntu-22.04 命令也可以。

4)進(jìn)入ubuntu命令行界面后,發(fā)現(xiàn)執(zhí)行docker命令會(huì)報(bào)錯(cuò):

在這里插入圖片描述

這是因?yàn)楫?dāng)前用戶沒有足夠的權(quán)限,解決方法是,在前面加上sudo,即 sudo docker ps 就可以。

但我不想每次都加sudo,太麻煩了。還有另外一種方法,執(zhí)行 sudo usermod -aG docker ${USER} 命令將當(dāng)前用戶加入到docker用戶組就可以不用加sudo了。

注意:加入到docker用戶組后,要關(guān)閉當(dāng)前窗口,重新進(jìn)入ubuntu命令行才會(huì)生效!

5)在ubuntu中選一個(gè)路徑作為你項(xiàng)目的存儲(chǔ)目錄,我選的是 /home/workspace 目錄,因?yàn)槲业捻?xiàng)目有上傳到git倉庫,因此我使用 git clone 命令將代碼下載到 /home/workspace 目錄即可。

6)在ubuntu中啟動(dòng)docker容器,將代碼目錄掛載到docker容器里去,命令參考:

docker run -d -v /home/workspace:/var/www/html --name {CONTAINER_NAME} {IMAGE_NAME}

/home/workspace 是宿主機(jī)路徑, /var/www/html 是容器路徑, {CONTAINER_NAME} 是容器名字, {IMAGE_NAME} 是鏡像名字,需自行替換。

7)現(xiàn)在我的代碼都存儲(chǔ)在ubuntu里了,那在Windows上我還怎么用IDE進(jìn)行開發(fā)?

不用急,在Windows上我們也是可以訪問ubuntu里的文件的。

例如下圖,在IDE里打開項(xiàng)目的時(shí)候,選擇 \\wsl$\Ubuntu-22.04\ ,這個(gè)文件夾里的就是ubuntu系統(tǒng)里的文件目錄,然后選擇你代碼所在的文件夾打開就可以了:

在這里插入圖片描述

8)將代碼改為存儲(chǔ)在ubuntu里后,再次運(yùn)行項(xiàng)目,速度已經(jīng)恢復(fù)正常~

到此這篇關(guān)于PHP項(xiàng)目在Docker(WSL2)中運(yùn)行緩慢的解決方法的文章就介紹到這了,更多相關(guān)PHP項(xiàng)目在Docker中運(yùn)行緩慢內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Yii學(xué)習(xí)總結(jié)之安裝配置

    Yii學(xué)習(xí)總結(jié)之安裝配置

    本文是Yii學(xué)習(xí)總結(jié)系列文章的第一篇,主要給大家介紹下YII的簡單介紹及安裝和配置,有需要的小伙伴參考下吧。
    2015-02-02
  • ajax緩存問題解決途徑

    ajax緩存問題解決途徑

    ajax緩存問題解決途徑...
    2006-12-12
  • 如何寫php守護(hù)進(jìn)程(Daemon)

    如何寫php守護(hù)進(jìn)程(Daemon)

    這篇文章主要介紹了如何寫php守護(hù)進(jìn)程Daemon,
    2015-12-12
  • 最新評(píng)論

    泰州市| 沿河| 婺源县| 贡山| 循化| 高台县| 秦皇岛市| 鄂尔多斯市| 南靖县| 军事| 荆门市| 扶余县| 会昌县| 汉阴县| 金秀| 莱西市| 仪陇县| 清新县| 大石桥市| 岳普湖县| 万年县| 登封市| 姚安县| 沙湾县| 自治县| 西乡县| 肃宁县| 清水河县| 冷水江市| 积石山| 岱山县| 黑山县| 大同市| 汕尾市| 莲花县| 镇巴县| 建瓯市| 祥云县| 临西县| 修水县| 黑水县|