(更新中)将 homestead 中的项目迁移到 laravel sail 中进行开发

laravel

本文的目的是:将原本跑 homestead 环境下的 laravel 项目,迁移到官方最新推荐的 laravel sail 开发环境中。下面我分享一下我的操作方法。

在文章开始之前,我们默认大家均已拥有一个 homestead 开发环境,且你也是在其之上本地开发多次的开发者,而且你的需求是将你的 homestead 开发环境转换成 laravel sail,希望借助 docker 技术来提升系统的

1. 项目克隆

首先我们你将线上仓库的代码clone到本地

1
git clone git@github.com:NightingaleWK/larabbs.git larabbs

然后我们启动 homestead ,并在 homestead 的 linux 环境中执行接下来的工作。

我们先来到项目根目录复制一份 .env 文件

1
2
3
4
5
cp .env.example .env

vim .env

// 编辑一下 .env 文件并保存

2. 项目改造

然后在已运行的应用中安装 Composer 依赖,以下指令执行后,其余未安装的以来也将一并安装,毕竟我们没有执行过 composer i 嘛

1
composer require laravel/sail --dev

在 Sail 完成安装后,你可以运行 Artisan 命令 sail:install。这个命令将会发布 Sail 的 docker-compose.yml 文件到你应用程序的根目录:

1
php artisan sail:install --with=mysql,redis

以上这一步的执行可能会花费很长时间,网上有很多修改相关配置的来提高速度,大家可以自己搜索,至于为什么我不用,那就是希望追求纯粹正统,composer 阿里云的源与官方源完全跟不上,composer u 执行完简直是反向升级,以后再也不相信国内的源了。

然后我再说一下 with 后面的该怎么填写,你可以尝试执行不带 with 的命令,可以看到几个可选的选项,这些就是填写在 with 后面的内容,按需选择安装即可。

上述步骤安装完毕会系统会提示 Sail build successful. 这就代表着这一阶段任务完成

然后我们把项目推送到线上仓库

3. 代码上传

1
2
3
git add -A
git commit -m "ready for docker"
git push

4. 代码部署

然后我们回到我们的sail环境中,把最新的项目代码从仓库拉下来

1
git clone git@github.com:NightingaleWK/larabbs.git larabbs

之后我们也是重新配置 .env 文件

然后我们执行 composer 命令,安装在 sail 环境下的依赖

1
2
3
4
5
6
docker run --rm \
-u "$(id -u):$(id -g)" \
-v "$(pwd):/var/www/html" \
-w /var/www/html \
laravelsail/php82-composer:latest \
composer install --ignore-platform-reqs

这里与在 homestead 中不同的是,我们 sail 环境不包括 composer 命令,这个命令使用一个包含 PHP 与 Composer 的小型 Docker 容器进行应用程序依赖的安装。

当你使用 laravelsail/phpXX-composer 镜像时,你应该选择和你的应用程序所用环境相同的 PHP 版本(74、80、81 或 82)。

5. 环境运行

1
2
3
sail up -d

// -d 表示后台运行,去掉那就是前台运行,需要 ctrl + c 来结束。加入带着 -d,那么我们退出的话则需要输入 sail down 来结束