问题描述
在使用docker-compose时,遇到了一个问题。他在一个docker-compose-custom.yml文件中定义了一个服务,并希望在该服务运行后,在容器内执行一个简单的命令。他尝试使用docker-compose exec命令来执行命令,但是命令没有执行,控制台没有任何输出,只是返回了。他希望知道如何使命令执行成功。
用户的docker-compose版本是1.29.2。
解决方案
请注意以下操作注意版本差异及修改前做好备份。
方案1
根据回答1,你的命令语法有误。正确的命令应该是:
docker-compose -f docker-compose-custom.yml exec myapp-back-preproduction npm install
在这个命令中,-f
选项用于指定docker-compose文件的路径,exec
命令用于在运行的容器中执行命令,myapp-back-preproduction
是你的服务名称,npm install
是你要执行的命令。
方案2
根据回答2,你可以使用docker exec -it <container> <command>
命令在运行的容器中执行命令。这个命令允许你在容器内启动一个交互式的shell会话,非常方便。
不过,你需要注意为什么需要调用npm
命令。如果这是运行你的应用程序所必需的,应该在Dockerfile中完成(或者可以在启动脚本中完成)。
请注意,只有在容器实际运行应用程序时(即入口点调用没有返回时),容器才会保持运行状态。因此,启动一个非活动的容器,然后手动运行应用程序是行不通的。容器将立即停止。
方案3
根据回答3,你可以尝试以下命令来执行你的命令:
docker-compose exec container_name npm install xxx
在这个命令中,container_name
是你的容器名称,npm install xxx
是你要执行的命令。
请注意,这只是一个示例命令,你需要将container_name
替换为你实际的容器名称,并将npm install xxx
替换为你要执行的实际命令。
以上是几种可能的解决方案,你可以根据自己的需求选择适合的方法来执行命令。