小さなデータベースと一緒にサーバー上で実行する必要があるアルゴリズムを作成しています。urwid(ncurses)Pythonアプリケーションをドッカーで作成
ドッカー-compose.yml:
version: '3'
services:
app:
command: python -u app.py
build: .
stdin_open: true
db:
image: mongo:latest
Dockerfile:
FROM python:3.6.1
COPY . /usr/src/app
WORKDIR /usr/src/app
RUN pip install -r requirements.txt
アプリのncursesアルゴリズムを監視するためにTUIに端子を変換(urwid)アプリケーションです。ラップトップで別途アプリを実行すると、端末がTUIに切り替わり、期待どおりに動作します。コマンド "docker-compose up"を実行すると、ターミナルはまずdockerとmongoからstdoutを表示し、その後TUIの特定の(切り取られた)部分が表示され始めます。 TUIコンポーネントの形式が正しくなく、応答がありません。ドッカープロセスを終了すると、クリップされた部品が端末に保持されます。
考えられるヒント: TUIには、hrs:min:secの実行クロックが含まれています。クリップされた部品が表示されたら、時計は正しいですが、すぐにフリーズします。クロックは、基になるasyncioイベントループによって更新されます。