通过docker compose中的Entrypoint命令与Ruby Padrino控制台交互
我正在尝试启动一个Padrino控制台(类似于Rails控制台) 这是我在通过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
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