开发环境是Win10企业版 + Wsl2 + Laradock,测试时间是2023.03.13
参考文档:
使用 Laradock 搭建基于 Docker 的 PHP 开发环境 | 快速入门 | Laravel 5.5 中文文档 (laravelacademy.org)
(踩坑)WSL2+docker+laradock 配置并安装 Laravel 框架 | Laravel China 社区 (learnku.com)
Windows 10 Docker 安装并搭建 PHP 开发环境 - 简书 (jianshu.com)
网络问题
在build的时候,会涉及到很多外网资源的下载,由于众所周知的原因,在国内的速度简直令人发指。可以修改.env文件中的部分选项来提速;
- 将下载源更换为国内镜像源(修改.env文件);
# 将comoser更换为阿里镜像源(更改为其他国内镜像源也可以,否则速度不稳定)
WORKSPACE_COMPOSER_REPO_PACKAGIST=https://mirrors.aliyun.com/composer/
# 设置NVM安装node的淘宝镜像源
WORKSPACE_NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node
# 设置node的淘宝的registry
WORKSPACE_NPM_REGISTRY=https://registry.npm.taobao.org/
apt切换为国内镜像源:
# 更换中国镜像源,改为true
CHANGE_SOURCE=true
- 安装Node
如果不需要使用node,可以把一些配置项设置为false,同时上面的淘宝镜像源需要留空;
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,那么一般情况下会卡在安装“nvm”时,因为里面会涉及到访问https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh 这个网络文件,也就是github上面的 creationix/nvm 仓库的install.sh文件,会网络超时;
解决办法以下三种任选其一:
- 手动修改host文件,让网址直接对应IP;
- 手动下载 install.sh 文件,然后修改配置文件(相对目录 laradock/workspace/Dockerfile),将涉及到该文件的网络请求改为读取本地文件;
- 将上面提到的Node配置项设置为false;
如果没有特别的需求,建议不要在docker里面装Node,直接本地环境装就可以了;
- PHP 8.0
因为最新的Laravel版本都到9,10了,最低要求PHP需要8.0以上;目前下载laradock里面的PHP版本默认还是7.4,所以后来只能手动修改.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命令
# 启动容器,如果软件没有编译会先编译
docker-compose up -d nginx mysql redis workspace
# 重新构建容器
docker-compose build php-fpm
# 关闭容器服务
docker-compose stop
# 进入laradock虚拟机的命令行
docker-compose exec workspace bash
# 进入mysql命令行
docker-compose exec mysql bash
修改PHP版本,可以参考 Laradock 切换 PHP 版本 - 麻辣讲 (malajiang.com)
遇到的一些坑
- mysql问题
在mysql命令行中,通过命令 mysql -u root -p进行登录,账号密码都是对的,但是就是提示错误,但是直接执行命令 mysql 却可以连上数据库。
解决方法:将mysql中的数据库删除:
# 如果没有修改.env文件,win10的mysql数据也是存在这个目录
rm -rf ~/.laradock/data
然后重新编译mysql:
docker-compose build
此时再次进入mysql命令行,直接执行mysql就连不上数据库了,通过账号密码可以登录;同时,laravel项目的.env文件中,DB_HOST 需要填mysql,这里如果填错会导致项目可以跑起来但是涉及到数据库的时候就会报错;
- laravel项目启动问题
报错信息:
The stream or file(...) could not be opened in append mode
说明权限不够,需要在workspace命令行(docker-compose exec workspace bash
)中修改权限
chown -R laradock:laradock /var/www
其他一些问题,比如没有生成项目的key会报错,直接在workspace命令行中执行php artisan key:generate
即可
其它Laravel项目问题可以参考 使用 Laradock 配置并运行一个 Laravel 站点 - 麻辣讲 (malajiang.com)
网友评论