Nut*_*tim 5 docker docker-compose devops
我正在尝试使用docker-compose来启动一个容器。作为ENTRYPOINT,该容器具有我编写的简单bash脚本。现在,当我尝试通过以下任何一种方式调高容器时:
docker-compose up
docker-compose up foo
它没有完成。即,尝试将(docker exec -i -t $1 /bin/bash
)附加到正在运行的容器,失败,并显示:
来自守护程序的错误响应:容器xyz正在重新启动,请等待容器运行。
我尝试在后台放置命令。那没用。
我的脚本
cmd1 &
cmd2 &&
...
cmdn &
Run Code Online (Sandbox Code Playgroud)
我也试过我)与不entrypoint: /bin/sh /usr/local/bin/my-script.sh
和II)有和没有的tty: true
选项。没有骰子。
docker-compose.yml
version: '2'
services:
foo:
build:
context: .
dockerfile: Dockerfile.foo
...
tty: true
entrypoint: /bin/sh /usr/local/bin/my-script.sh
Run Code Online (Sandbox Code Playgroud)
还尝试了仅手动的docker构建/运行周期。并且(无需/bin/sh
在ENTRYPOINT中启动)运行将退出。
$ docker build ... .
$ docker run -it ...
... shell echos commands here, then exits
$
Run Code Online (Sandbox Code Playgroud)
我敢肯定这很简单。这里有什么解决方案?
首先,您需要放置一些无限的东西来继续在后台运行您的容器,就像您可以tail -f application.log
或类似的东西一样,这样即使您从容器bash中退出,它也会继续在后台运行
您不需要cmd1 & cmd2 &&...cmdn &
只将这样的一个命令touch 1.txt && tail -f 1.txt
作为最后一步放在my-script.sh
. 它将继续运行您的容器。您还需要更改的一件事是docker run -it -d
-d
将以后台模式启动容器。如果您想进入容器而不是docker exec -it container_name/id bash
调试问题并退出。它仍然会保持您的容器运行,直到您停止运行,docker stop container_id/name
希望有所帮助。谢谢你!
归档时间: |
|
查看次数: |
8755 次 |
最近记录: |