Bra*_*min 15 linux command exec composer-php docker
我正在尝试在docker exec中执行两个命令.具体来说,我必须在特定目录中运行命令.我试过这个,但是没有用:
docker exec [id] -c 'cd /var/www/project && composer install'
Run Code Online (Sandbox Code Playgroud)
-c未检测到参数.我也试过这个:
docker exec [id] cd /var/www/project && composer install
Run Code Online (Sandbox Code Playgroud)
但该命令composer install在docker exec命令后执行.我该怎么做?
Dan*_*owe 24
在你的第一个例子中,你给的是-c旗帜docker exec.这是一个简单的答案:docker exec没有-c旗帜.
在你的第二个例子中,你的shell在Docker看到之前将其解析为两个命令.它相当于:
if docker exec [id] cd /var/www/project
then
composer install
fi
Run Code Online (Sandbox Code Playgroud)
首先,docker exec运行,如果它退出0(成功),composer install将尝试在Docker之外本地运行.
您需要做的是将两个命令作为单个参数传递给docker exec使用字符串.然后,直到已经在容器内部,它们才会被shell解释.
docker exec [id] "cd /var/www/project && composer install"
Run Code Online (Sandbox Code Playgroud)
但是,正如您在评论中指出的那样,这也行不通.那是因为它cd是一个内置的shell,并不是自己存在的.尝试执行它作为初始命令将失败.所以下一步就是把它交给shell来执行.
docker exec [id] "bash -c 'cd /var/www/project && composer install'"
Run Code Online (Sandbox Code Playgroud)
最后,此时&&已经进入了一组内部引号,因此我们并不需要bash命令周围的引号......如果您愿意,可以删除它们.
docker exec [id] bash -c 'cd /var/www/project && composer install'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19076 次 |
| 最近记录: |