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

ubof19bj  于 2023-02-25  发布在  PHP
关注(0)|答案(3)|浏览(140)

Laravel Sail,有一个很好的前提来创建一个零依赖环境,有,php,redis,mariadb等...
但是它的安装需要 composer , composer 需要php安装,
这是否矛盾呢?
有什么方法可以实现零依赖,与码头安装?

0ve6wy6x

0ve6wy6x1#

    • 编辑**

昨天我在听Laravel新闻播客,来自Laravel的人为这个问题创造了一个解决方案。他们现在有一个部分,其中有一个命令,旋转一个PHP容器,以便首先通过容器安装PHP依赖项,然后将它们移到您的主机上。

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

"As Sail"为您提供了通过Artisan从主机管理容器的选项,然后选择
如果你不介意放弃使用Sail的能力,只是想为Laravel建立一个停靠的环境,那么是的.你可以为php创建a container,在其中你可以复制你的项目,并通过卷Map到主机.你可以输入一个容器(就像使用ssh一样)到docker-compose exec <service> <command>,在我链接的repo中,php Dockerfile使用Alpine作为linux发行版,它附带ash(而不是bash)shell。

docker-compose exec php ash

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

mfuanj7w

mfuanj7w2#

它在文档中:
https://laravel.com/docs/9.x/sail#installing-composer-dependencies-for-existing-projects
您可以使用sail Docker容器来引导进程,并在该容器中运行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

如果您还没有使用PHP 8,这里也有一个laravelsail/php7.4:latest容器。
编辑:上面的 * 曾经 * 工作,但现在似乎坏了。容器没有sail用户或组,这导致权限问题。
当执行sail up命令时,PHP容器的入口点将获取当前用户ID和组ID,然后将它们分配给sail用户和组。(现在)这发生在sail up命令中,而不是上面列出的laravelsail容器中。
我不确定这是什么时候改变的。现在你可以不使用-u选项运行上面的程序,并在容器中设置应用程序为根目录。之后需要手动修改权限。
还要注意的是,laravelsail/php7.3容器最初只安装了composer v1.8,但可以使用composer self-update轻松更新。

qhhrdooz

qhhrdooz3#

这个命令对我在windows上工作:

docker run -v /c/xampp/htdocs/boilerplate:/var/www/html -w /var/www/html composer install  --ignore-platform-reqs

相关问题