从 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 越来越普及和流行,作为爱好者亦或是从业者,早晚需要接触到这些知识的,花点时间入个门,使用方面起码是没问题的
  • 另一点是不方便定制化,特别是对于大陆特殊的网络环境而言,通常需要设置国内镜像才能正常下载,使用一键脚本会让定制化改动变得不方便
最后修改:2021 年 03 月 01 日
如果觉得我的文章对你有用,请随意赞赏