Laravel Sail,有一个很好的前提来创建一个零依赖环境,有,php,redis,mariadb等...但是它的安装需要 composer , composer 需要php安装,这是否矛盾呢?有什么方法可以实现零依赖,与码头安装?
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。
ssh
docker-compose exec <service> <command>
ash
bash
docker-compose exec php ash
进入容器并在其中运行命令。
mfuanj7w2#
它在文档中:https://laravel.com/docs/9.x/sail#installing-composer-dependencies-for-existing-projects您可以使用sail Docker容器来引导进程,并在该容器中运行composer。该文档的主要部分是以下命令:
composer
如果您还没有使用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轻松更新。
laravelsail/php7.4:latest
sail
sail up
laravelsail
-u
laravelsail/php7.3
composer self-update
qhhrdooz3#
这个命令对我在windows上工作:
docker run -v /c/xampp/htdocs/boilerplate:/var/www/html -w /var/www/html composer install --ignore-platform-reqs
3条答案
按热度按时间0ve6wy6x1#
昨天我在听Laravel新闻播客,来自Laravel的人为这个问题创造了一个解决方案。他们现在有一个部分,其中有一个命令,旋转一个PHP容器,以便首先通过容器安装PHP依赖项,然后将它们移到您的主机上。
"As Sail"为您提供了通过Artisan从主机管理容器的选项,然后选择否。
如果你不介意放弃使用Sail的能力,只是想为Laravel建立一个停靠的环境,那么是的.你可以为php创建a container,在其中你可以复制你的项目,并通过卷Map到主机.你可以输入一个容器(就像使用
ssh
一样)到docker-compose exec <service> <command>
,在我链接的repo中,php Dockerfile使用Alpine作为linux发行版,它附带ash
(而不是bash
)shell。进入容器并在其中运行命令。
mfuanj7w2#
它在文档中:
https://laravel.com/docs/9.x/sail#installing-composer-dependencies-for-existing-projects
您可以使用sail Docker容器来引导进程,并在该容器中运行
composer
。该文档的主要部分是以下命令:如果您还没有使用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
轻松更新。qhhrdooz3#
这个命令对我在windows上工作: