我正在尝试启动Padrino控制台(类似于Rails控制台)。
这是我在Dockerfile
中的ENTRYPOINT命令
ENTRYPOINT /usr/src/app/docker-entrypoint.sh
当环境变量值为$CONSOLE = Y
时,我想启动控制台
这是docker-entrypoint.sh
脚本
if [ "$CONSOLE" = "Y" ];
then
echo "Starting Padrino console"
bundle exec padrino console
else
#something else
fi
但是,当我使用环境变量docker-compose up
运行CONSOLE = Y
时,控制台开始启动,但以Switch to Inspect mode
结尾。我在线上尝试了许多解决方案,尽管docker-compose exec <container-name> bundle exec padrino console
可能有效,但它超出了内存,并杀死了控制台进程和容器上运行的服务器。
如何仅通过docker-compose up
命令启动控制台?
编辑
这是我的docker-compose.yml
文件
version: '3'
services:
app:
build: .
volumes:
- .:/usr/src/app
ports:
- "36081:36081"
restart: always
depends_on:
<other-services>
container_name: application
environment:
- MIGRATE=$MIGRATE
- CONSOLE=$CONSOLE
<other-services>
答案 0 :(得分:1)
因此根据此issue,您不能在docker-compose中分配tty,因为它启动了多个容器。
这是预期的行为。起来不是互动的。它可以开始 多个容器,因此您不能拥有一个带有 stdin可打开多个容器。
由于docker-compose中只有一项服务,因此您可以尝试使用run
命令而不是up
docker-compose run app
或另一个选择是启动所有容器,然后使用docker attach
运行
但首先,您需要
docker-compose -d
然后
docker attach container_name
您可能还需要tty
标志为true
version: '3'
services:
app:
build: .
tty: true