在第一個示例中,您將-c
標誌設置爲docker exec
。這是一個簡單的答案:docker exec
沒有-c
標誌。
在第二個示例中,在Docker甚至發現它之前,shell將它解析爲兩個命令。這是相同的:
if docker exec [id] cd /var/www/project
then
composer install
fi
首先,docker exec
運行,如果它退出0(成功),composer install
將嘗試運行本地,泊塢窗之外。
您需要做的是將兩個命令作爲單個參數傳遞給docker exec
使用字符串。然後,它們將不會被shell解釋,直到已經在容器內。
docker exec [id] "cd /var/www/project && composer install"
但是,正如你在評論中指出的那樣,這也行不通。這是因爲cd
是一個內置的shell,並不存在。嘗試執行它作爲初始命令將失敗。所以下一步就是把它交給一個shell來執行。
docker exec [id] "bash -c 'cd /var/www/project && composer install'"
最後,在這一點上&&
已移動到內部的一組引號的,所以我們並不真正需要圍繞bash
命令引號...如果你喜歡,你可以刪除它們。
docker exec [id] bash -c 'cd /var/www/project && composer install'
你嘗試:'搬運工EXEC [ID] /斌/慶典-c「CD /無功/網絡/項目&&作曲家安裝'' –
感謝老兄,我沒有看到你的評論,但它的工作! –