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)  就是等价的

批注 2020-07-14 021817
$(shell pwd)和$(pwd)用法区别

$(shell pwd):执行pwd命令

$(pwd):表示当前所在目录

posted @ 2020-07-14 02:19  dzkjz  阅读(2382)  评论(0编辑  收藏  举报