我正在制作一个运行的 devops 脚本
docker-compose run --no-deps my_service
出于在容器中运行诊断操作的唯一原因,而不运行实际的容器命令。 (因为它可能是资源密集型的,或者可能完全失败。)
我想我会用某种永远运行的无操作来覆盖入口点。
永远运行
部分很重要,因为如果我只使用echo
或cat
或任何东西,该过程将立即完成并且我将无法在我的容器上使用 docker exec 。
我试过了
--entrypoint "tail -f /dev/null"
但运气不佳。似乎 --entrypoint
不允许您输入命令的参数。
你知道这是否可能吗?
我尝试过的另一个有趣的技巧是 --entrypoint yes
,它使入口点成为 Linux 的 yes
实用程序,它只输出 y
> 无限循环。
这个方法运行了 2 个小时,效果很好,直到我的硬盘空间用完,不得不删除所有内容。
如果您有一个像 yes
这样的常见 Linux 命令的想法,它只会永远等待,并且不会打印无限量的文本,请告诉我。
最佳答案
观看
怎么样?
这有效:
# Dockerfile
FROM busybox
ENTRYPOINT ["echo","hello"]
# docker-compose.yml
version: '3'
services:
test:
build:
context: .
然后:
$ docker-compose run --entrypoint="watch -n2 ls" test
[编辑]:如果您不希望容器执行太多操作,您甚至可以将 -n
设置为 100000...顺便说一句,我尝试使用 tail -f/dev/null
似乎可以工作,docker-compose 和 docker 的版本是什么?
关于docker - 让 `docker-compose run` 不执行任何操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58257872/