docker - 让 `docker-compose run` 不执行任何操作

标签 docker docker-compose

我正在制作一个运行的 devops 脚本

docker-compose run --no-deps my_service

出于在容器中运行诊断操作的唯一原因,而不运行实际的容器命令。 (因为它可能是资源密集型的,或者可能完全失败。)

我想我会用某种永远运行的无操作来覆盖入口点。

永远运行部分很重要,因为如果我只使用echocat或任何东西,该过程将立即完成并且我将无法在我的容器上使用 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/

相关文章:

docker - 网站的单个 Nginx Docker 与多个 Nginx Docker

postgresql - 使用 docker-compose 启动 Postgres 会立即关闭

mysql - 启动时使用静态数据进行 Docker 集成测试

.net - 适用于centos 7的Docker设置

docker - 我可以使用 docker 在 Mac 上安装 ubuntu 吗?

windows - Azure VM 与 Docker 无法连接

docker - Docker构建在RUN pip install -e git <repo url>上失败

docker - 使用 docker 将 mule 应用程序部署到 mule 集群

php - 如何使用docker-compose将用户上传的文件保存到已安装的卷中?

docker - 为什么 docker-compose 在挂载命名卷时会创建一个空的主机文件夹?