我的Dockerfile中有这个:
...
CMD bash on-start.sh
我可以使用它运行它,然后根据需要获得一个交互式外壳。
$ docker run -it imagename
$ _
但是这样做时不起作用:
$ docker-compose up
...
exited with code 0
如果执行此操作,它也可以正常运行,但是相关服务未启动。
$ docker-compose run myservice
$ _
我的版本:
$ docker --version
Docker version 1.10.0, build 590d5108
$ docker-compose --version
docker-compose version 1.6.0, build d99cad6
您可能要在Compose文件中使用stdin_open:true。
这是预期的行为。 up
不是交互式的。 它可以启动多个容器,因此您不能拥有一个为多个容器打开了stdin的终端。
run
应该做您想要的。 如果您使用depends_on
,它将从Compose 1.6.2起开始依赖(该错误已在Compose 1.6.1中修复),因此您也需要升级。
@dnephin
丹尼尔(Daniel),我要感谢您对这个主题的发言。 我一直在努力使容器在Node服务器上以交互模式工作,但我还需要通过后端的终端输入一些数据,这一工作已经两天了。 您的笔记措辞使我从另一个方向审视了我的问题。 长时间阅读docker撰写详细信息(包括run方法)确实对我有用。 非常感谢。
我想获得对在docker-compose环境中运行的Python调试器pdb的交互式访问。 直到我可以用docker attach myservice
最有用的评论
您可能要在Compose文件中使用stdin_open:true。