參考
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):表示當前所在目錄