Laravel Sail Paradox - 有什么方法可以在不安装 php 和 composer 的情况下安装?

Laravel Sail Paradox - There are any way to install without php and composer installed?

Laravel Sail,有一个很好的前提来创建一个零依赖环境,php,redis,mariadb等...

但是它的安装需要composer,composer需要安装php,

这是悖论吗?

安装docker有什么方法可以实现零依赖?

由于 Sail 为您提供了通过 Artisan 从主机管理容器的选项,因此

如果你不介意放弃这样使用Sail的能力,只想为Laravel搭建一个docker化的环境,那么是的 .您可以为 php 创建 a container,在其中复制您的项目并通过卷映射到主机。你可以通过docker-compose exec <service> <command>进入一个容器(好像使用ssh),在我链接的repo中,php Dockerfile使用Alpine作为linux发行版,它附带ash(而不是 bash)shell。因为他你可以运行

docker-compose exec php ash

进入容器并在其中运行命令。

它在此处的文档中:

https://laravel.com/docs/9.x/sail#installing-composer-dependencies-for-existing-projects

您可以单独使用 sail Docker 容器来 bootstrap 进程,并在该容器中使用 运行 composer。该文档的主要部分是这个命令:

docker run --rm \
    -u "$(id -u):$(id -g)" \
    -v $(pwd):/var/www/html \
    -w /var/www/html \
    laravelsail/php81-composer:latest \
    composer install --ignore-platform-reqs

还有一个 laravelsail/php7.4:latest 容器,如果您还没有使用 PHP 8.


编辑:以上曾经有效,但现在似乎已损坏。容器没有 sail 用户或组,这会导致权限问题。

当执行sail up命令时,PHP容器的入口点将获取当前用户ID和组ID,然后将它们分配给sail用户和组。这种情况(现在)发生在 sail up 命令中,而不是上面列出的 laravelsail 容器中。

我不确定这是什么时候改变的。现在你可以 运行 上面没有 -u 选项,并在容器中将应用程序设置为根。之后需要手动修复权限。

另请注意,laravelsail/php7.3 容器最初只安装了 composer v1.8,但可以使用 composer self-update.

轻松更新