通过docker compose中的Entrypoint命令与Ruby Padrino控制台交互

通过docker compose中的Entrypoint命令与Ruby Padrino控制台交互,ruby,docker,docker-compose,Ruby,Docker,Docker Compose,我正在尝试启动一个Padrino控制台(类似于Rails控制台) 这是我在Dockerfile ENTRYPOINT /usr/src/app/docker-entrypoint.sh 当env变量值为$console=Y 下面是docker entrypoint.sh脚本 if [ "$CONSOLE" = "Y" ]; then echo "Starting Padrino console" bundle exec padrino console else #somethi

我正在尝试启动一个Padrino控制台(类似于Rails控制台)

这是我在
Dockerfile

ENTRYPOINT /usr/src/app/docker-entrypoint.sh
当env变量值为
$console=Y

下面是
docker entrypoint.sh
脚本

if [ "$CONSOLE" = "Y" ];
then
    echo "Starting Padrino console"
    bundle exec padrino console
else
#something else
fi
但是,当我使用环境变量
CONSOLE=Y运行
docker compose up
时,控制台开始启动,但以
切换到检查模式
结束。我在网上尝试了很多解决方案,虽然
docker compose exec 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>  
版本:“3”
服务:
应用程序:
生成:。
卷数:
-.:/usr/src/app
端口:
- "36081:36081"
重新启动:始终
取决于:
容器名称:应用程序
环境:
-迁移=$MIGRATE
-控制台=$CONSOLE
因此,根据这一点,您不能在docker compose中分配tty,因为它会启动多个容器

这是意料之中的行为。向上不是互动的。它可以启动 多个容器,因此不能有一个具有 stdin可用于多个容器

由于docker compose中只有一项服务,因此您可以尝试使用
run
命令而不是
up

docker-compose run app
或者另一个选项是启动所有容器,然后使用
docker attach
但首先,你需要

docker-compose -d
然后

您可能还需要将
tty
标志设置为true

version: '3'
services:
  app:
    build: .
    tty: true


你能给docker看一下撰写文件吗?@adii我已经更新了问题谢谢!我使用的是附加方法,但没有设置
tty
标志。它起作用了!
version: '3'
services:
  app:
    build: .
    tty: true