我正在尝试做的事情是创建一个由docker-compose应用程序组成的应用程序,该应用程序具有单个服务,充当可与其余服务交互的REPL。我尝试了多种方法来仅将此服务附加到stdin和stdout,但是我还没有发现任何可行的优雅方法。 This stackoverflow post's answer说stdin_open: true
和tty: true
可以用,这就是我用它制作的:
version: '3'
services:
redis:
image: redis
python:
image: python
entrypoint: /bin/sh
stdin_open: true
tty: true
正在运行docker-compose up
仍会发送两个服务的日志,并且docker-compose up -d
会分离两个服务。对于此示例,有一种简便的方法可以在仅运行docker-compose up ...
时(即,不运行docker exec
等)将交互式shell传递到python服务吗?
您可以使用docker-compose run
和Docker Compose YAML文件中的其他设置来docker-compose run
替代命令。如果该服务image:
其他服务,它将启动它们。要注意的一件事是,默认情况下它不会发布声明的depends_on:
。
ports:
[学习语言和日常开发的工具,特别是对于Python,docker-compose run python /bin/sh
提供了一个独立的游乐场,您可以在其中安装软件包作为用户帐户,而不会干扰系统Python。)