使用docker exec执行两个命令

BraveAdmin:

我正在尝试在docker exec中执行两个命令。具体来说,我必须在特定目录中运行命令。我试过了,但是没用:

docker exec [id] -c 'cd /var/www/project && composer install'

-c未检测到参数我也尝试过这个:

docker exec [id] cd /var/www/project && composer install

但是该命令composer installdocker exec命令之后执行。我该怎么做?

丹·洛(Dan Lowe):

在第一个示例中,您将-c标志赋予docker exec这是一个简单的答案:docker exec没有-c标志。

在您的第二个示例中,您的shell将其解析为两个命令,甚至在Docker看到它之前。等效于:

if docker exec [id] cd /var/www/project
then
    composer install
fi

首先,docker exec运行,如果退出0(成功),composer install它将尝试在Docker外部本地运行

您需要做的是将两个命令作为一个参数传递给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'

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在find命令的-exec中使用两个bash命令?

通过 paramiko 使用一个 SSH 对象连续执行两个命令

如何在bash中使用`fc`编辑和执行最后两个命令

无法使用C#中的不同帐户同时执行两个Office 365命令

使用Where {(...)}后如何在Powershell中执行两个命令

是否可以在C ++中使用一个make命令用两个不同的gcc版本编译两个不同的可执行文件?

如何使用多个启动参数打开cmd(我的意思是启动时执行两个命令)?

如何使用 find exec 输入两个可变参数?

在docker exec命令中使用'*'

如何使用docker exec运行2个命令

如何使用&&使用pipenv脚本运行两个命令?

无法使用两个线程在脚本中执行两个函数

如何使用两个按钮以相同的形式执行两个不同的操作?

使用 dplyr 基于两个条件执行两个动作

使用STREAM API在两个HashMap之间执行操作

如何使用Promise all()同时执行两个功能?

使用asyncio同时执行两个功能

使用importrange时如何执行两个条件条件?

使用两个不同的 Firestore 字段执行 where

使用 if 函数跨两个表执行计算 - Rstudio

如何使用两个 MongoDB 聚合来执行 updateMany

使用 React 在 onClick 上执行两个函数

在'docker exec'命令中执行'bash -c'

无法执行Docker exec * ID * -it命令

使用WPF绑定传递两个命令参数

使用find命令,但排除两个目录中的文件

如何使两个命令按顺序使用stdin的输入?

递归使用awk命令比较两个文件

使用diff比较两个命令的输出