簡體   English   中英

通過 docker-compose 中的 Entrypoint 命令與 Ruby Padrino 控制台交互

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM