docker run --rm -v $(pwd):/app composer/composer install
参考
https://learnku.com/laravel/t/38564#reply125728
docker run --rm -v $(pwd):/app composer/composer install
镜像 composer/composer 已经弃用了, 改为 composer 了
再做一个说明
原文章说的是
步骤 2 — 安装依赖
我们需要运行 composer install 来提取所有组成 Laravel 的库 - 我们可以使用来自 [docker hub] 的 composer docker hub 为我们处理此问题。我们将通过执行以下命令来创建一个一次性容器。
docker run --rm -v $(pwd):/app composer/composer install
注意:我们使用 --rm 标志确保此容器不会在安装后逗留。
-v $(pwd):/app 用于将主机 (您的 cpu) 上的当前目录挂载到容器中的 /app 中 — 这是在 Composer 内部运行的位置容器希望找到一个 composer.json
-v $(pwd):/app 还将确保由 composer 在容器内创建的 vendor 文件夹在我们的计算机上也可见。————————————————
原文作者:Remember
转自链接:https://learnku.com/laravel/t/38564#a660c7
版权声明:著作权归作者所有。商业转载请联系作者获得授权,非商业转载请保留以上作者信息和原文链接。
因为我们的laravel 从github库clone下来后,缺少vendor文件,需要用composer安装,但是安装composer到本地暂时意义不大,所以如果要用,就利用docker的特性,1.文件夹挂载,2.容器可以移除掉;
一、把宿主机上laravel的工作目录挂进容器的app里面,composer安装会需要根据composer.json文件来查找需要安装的扩展,所以容器就可读取到宿主机上的composer.json了。
二、由于容器对文件的修改就是直接操作到挂载的文件夹里面的,所以容器里面的修改添加删除,就是对宿主机上的文件进行的修改添加删除。
那直接开一个容器给composer来直接操作,composer又不用安装到全局,命令添加一个--rm参数,容器运行完了就删除了,省空间。
-v 是 volume 就是数据卷,就是指定,[宿主机文件夹:容器内文件夹],就是把宿主机的文件夹挂载到容器的文件夹。
$(pwd)就是当前工作目录。
本命令显示整个路径名,Print Working Directory的意思;
PWD 是环境变量,$PWD 与 $(pwd) 就是等价的
$(shell pwd)和$(pwd)用法区别
$(shell pwd):执行pwd命令
$(pwd):表示当前所在目录