从 Laravel 8.x 开始,官方提供了一种使用 Docker + curl 来创建 Laravel 项目的方式。这种方式可以简单通过一行命令
curl -s https://laravel.build/example-app | bash
来快速新建 Laravel 项目
原理分析
通过 Docker,开发者可以在本地机器既没有安装 PHP,又没有配置 Composer 的情况下安装和使用 Laravel
直接访问 https://laravel.build/example-app
,可以发现网站 HTML 中返回了如下内容
docker info > /dev/null 2>&1
# Ensure that Docker is running...
if [ $? -ne 0 ]; then
echo "Docker is not running."
exit 1
fi
docker run --rm \
-v $(pwd):/opt \
-w /opt \
laravelsail/php80-composer:latest \
bash -c "laravel new example-app && cd example-app && php ./artisan sail:install --with=mysql,redis,meilisearch,mailhog,selenium"
cd example-app
CYAN='\033[0;36m'
LIGHT_CYAN='\033[1;36m'
WHITE='\033[1;37m'
NC='\033[0m'
echo ""
if sudo -n true 2>/dev/null; then
sudo chown -R $USER: .
echo -e "${WHITE}Get started with:${NC} cd example-app && ./vendor/bin/sail up"
else
echo -e "${WHITE}Please provide your password so we can make some final adjustments to your application's permissions.${NC}"
echo ""
sudo chown -R $USER: .
echo ""
echo -e "${WHITE}Thank you! We hope you build something incredible. Dive in with:${NC} cd example-app && ./vendor/bin/sail up"
fi
https://laravel.build/example-app
实际上是一个动态脚本生成器,curl 访问 URL 并获取到动态生成的脚本,通过管道传递给 bash 执行命令
观察脚本可以发现,这个过程的运行逻辑是使用 Docker 拉取一个 laravelsail/php80-composer
容器,再通过容器内的 Composer 执行创建项目的命令,和之前的 composer create
命令并没有本质不同
优点
- 虽然本质上还是通过 Composer 来创建项目,但是使用 Docker 只需要一条命令即可运行,不需要做太多的前期准备工作,省去了配置 PHP 和 Composer 的繁琐,降低学习和使用门槛,吸引更多萌新入坑
缺点
- 需要额外学习一些 Docker 知识,其实这算一个不是问题的问题。随着 Docker 越来越普及和流行,作为爱好者亦或是从业者,早晚需要接触到这些知识的,花点时间入个门,使用方面起码是没问题的
- 另一点是不方便定制化,特别是对于大陆特殊的网络环境而言,通常需要设置国内镜像才能正常下载,使用一键脚本会让定制化改动变得不方便
2 条评论
棒!!!
想问封面图是这么画出来的?
谢谢~
图标来自 Iconfont ,配色来自 Khrome ,作图用的 Canva-cn