開(kāi)發(fā)環(huán)境是Win10企業(yè)版 + Wsl2 + Laradock,測(cè)試時(shí)間是2023.03.13
參考文檔:
使用 Laradock 搭建基于 Docker 的 PHP 開(kāi)發(fā)環(huán)境 | 快速入門(mén) | Laravel 5.5 中文文檔 (laravelacademy.org)
(踩坑)WSL2+docker+laradock 配置并安裝 Laravel 框架 | Laravel China 社區(qū) (learnku.com)
Windows 10 Docker 安裝并搭建 PHP 開(kāi)發(fā)環(huán)境 - 簡(jiǎn)書(shū) (jianshu.com)
網(wǎng)絡(luò)問(wèn)題
在build的時(shí)候旭斥,會(huì)涉及到很多外網(wǎng)資源的下載,由于眾所周知的原因琳猫,在國(guó)內(nèi)的速度簡(jiǎn)直令人發(fā)指飘痛〈嬖恚可以修改.env文件中的部分選項(xiàng)來(lái)提速瓶佳;
- 將下載源更換為國(guó)內(nèi)鏡像源(修改.env文件);
# 將comoser更換為阿里鏡像源(更改為其他國(guó)內(nèi)鏡像源也可以蒸绩,否則速度不穩(wěn)定)
WORKSPACE_COMPOSER_REPO_PACKAGIST=https://mirrors.aliyun.com/composer/
# 設(shè)置NVM安裝node的淘寶鏡像源
WORKSPACE_NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node
# 設(shè)置node的淘寶的registry
WORKSPACE_NPM_REGISTRY=https://registry.npm.taobao.org/
apt切換為國(guó)內(nèi)鏡像源:
# 更換中國(guó)鏡像源衙四,改為true
CHANGE_SOURCE=true
- 安裝Node
如果不需要使用node,可以把一些配置項(xiàng)設(shè)置為false患亿,同時(shí)上面的淘寶鏡像源需要留空;
WORKSPACE_INSTALL_NODE=false
WORKSPACE_INSTALL_YARN=false
WORKSPACE_INSTALL_NPM_GULP=false
WORKSPACE_INSTALL_NPM_BOWER=false
WORKSPACE_INSTALL_NPM_VUE_CLI=false
WORKSPACE_INSTALL_NPM_ANGULAR_CLI=false
如果需要裝node传蹈,那么一般情況下會(huì)卡在安裝“nvm”時(shí),因?yàn)槔锩鏁?huì)涉及到訪問(wèn)https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh 這個(gè)網(wǎng)絡(luò)文件步藕,也就是github上面的 creationix/nvm 倉(cāng)庫(kù)的install.sh文件惦界,會(huì)網(wǎng)絡(luò)超時(shí);
解決辦法以下三種任選其一:
- 手動(dòng)修改host文件咙冗,讓網(wǎng)址直接對(duì)應(yīng)IP沾歪;
- 手動(dòng)下載 install.sh 文件,然后修改配置文件(相對(duì)目錄 laradock/workspace/Dockerfile),將涉及到該文件的網(wǎng)絡(luò)請(qǐng)求改為讀取本地文件雾消;
- 將上面提到的Node配置項(xiàng)設(shè)置為false;
如果沒(méi)有特別的需求灾搏,建議不要在docker里面裝Node,直接本地環(huán)境裝就可以了立润;
- PHP 8.0
因?yàn)樽钚碌腖aravel版本都到9确镊,10了,最低要求PHP需要8.0以上范删;目前下載laradock里面的PHP版本默認(rèn)還是7.4,所以后來(lái)只能手動(dòng)修改.env文件里面的PHP版本拷肌,然后重新編譯了
# Select a PHP version of the Workspace and PHP-FPM containers (Does not apply to HHVM).
# Accepted values: 8.2 - 8.1 - 8.0 - 7.4 - 7.3 - 7.2 - 7.1 - 7.0 - 5.6
PHP_VERSION=8.1
涉及到一些常用的docker-composer命令
# 啟動(dòng)容器到旦,如果軟件沒(méi)有編譯會(huì)先編譯
docker-compose up -d nginx mysql redis workspace
# 重新構(gòu)建容器
docker-compose build php-fpm
# 關(guān)閉容器服務(wù)
docker-compose stop
# 進(jìn)入laradock虛擬機(jī)的命令行
docker-compose exec workspace bash
# 進(jìn)入mysql命令行
docker-compose exec mysql bash
修改PHP版本,可以參考 Laradock 切換 PHP 版本 - 麻辣講 (malajiang.com)
遇到的一些坑
- mysql問(wèn)題
在mysql命令行中巨缘,通過(guò)命令 mysql -u root -p進(jìn)行登錄添忘,賬號(hào)密碼都是對(duì)的,但是就是提示錯(cuò)誤若锁,但是直接執(zhí)行命令 mysql 卻可以連上數(shù)據(jù)庫(kù)搁骑。
解決方法:將mysql中的數(shù)據(jù)庫(kù)刪除:
# 如果沒(méi)有修改.env文件,win10的mysql數(shù)據(jù)也是存在這個(gè)目錄
rm -rf ~/.laradock/data
然后重新編譯mysql:
docker-compose build
此時(shí)再次進(jìn)入mysql命令行又固,直接執(zhí)行mysql就連不上數(shù)據(jù)庫(kù)了仲器,通過(guò)賬號(hào)密碼可以登錄;同時(shí)仰冠,laravel項(xiàng)目的.env文件中乏冀,DB_HOST 需要填mysql,這里如果填錯(cuò)會(huì)導(dǎo)致項(xiàng)目可以跑起來(lái)但是涉及到數(shù)據(jù)庫(kù)的時(shí)候就會(huì)報(bào)錯(cuò)洋只;
- laravel項(xiàng)目啟動(dòng)問(wèn)題
報(bào)錯(cuò)信息:
The stream or file(...) could not be opened in append mode
說(shuō)明權(quán)限不夠辆沦,需要在workspace命令行(docker-compose exec workspace bash
)中修改www文件夾的擁有者和群組
# -r表示遞歸處理該文件夾下的所有子文件夾和文件
# 第一個(gè)laradock表示將laradock修改為新的文件擁有者昼捍,第二個(gè)laradock表示群組
chown -R laradock:laradock /var/www
其他一些問(wèn)題,比如沒(méi)有生成項(xiàng)目的key會(huì)報(bào)錯(cuò)肢扯,直接在workspace命令行中執(zhí)行php artisan key:generate
即可
其它Laravel項(xiàng)目問(wèn)題可以參考 使用 Laradock 配置并運(yùn)行一個(gè) Laravel 站點(diǎn) - 麻辣講 (malajiang.com)