[英]Interact with Ruby Padrino console through Entrypoint command in docker-compose
我正在嘗試啟動一個 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
但是,當我使用環境變量CONSOLE = Y
運行docker-compose up
,控制台開始啟動,但以Switch to Inspect mode
結束。 我在網上嘗試了很多解決方案,雖然docker-compose exec <container-name> bundle exec padrino console
可能有效,但它超過了 memory 並殺死了控制台進程和在容器上運行的服務器。
如何在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>
所以根據this issue ,你不能在docker-compose中分配tty,因為它啟動了多個容器。
這是預期的行為。 up 不是交互式的。 它可以啟動多個容器,因此您不能擁有為多個容器打開標准輸入的單個終端。
因為您的 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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.