Ich erstelle einen Algorithmus, der auf einem Server ausgeführt werden muss, zusammen mit einer kleinen Datenbank.Docker-komponieren mit Urwid (Ncurses) Python App
Andockfensters-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
Die App ist eine ncurses (urwid) App die das Endgerät in einen TUI transformiert den Algorithmus zu überwachen. Wenn ich die App separat auf meinem Laptop laufe, funktioniert es wie erwartet, das Terminal wird zur TUI. Wenn mit dem Befehl "docker-compose up" ausgeführt wird, zeigt das Terminal zunächst stdout von docker und mongo an, nach dem bestimmte (abgeschnittene) Teile der TUI angezeigt werden. Die TUI-Komponenten sind fehlerhaft und reagieren nicht. Wenn der Andockvorgang beendet wird, bleiben die abgeschnittenen Teile im Terminal.
Möglicher Hinweis: Die TUI enthält eine laufende Uhr mit Stunden: min: sek. Wenn die abgeschnittenen Teile erscheinen, ist die Uhr korrekt, aber sie friert sofort ein. Die Uhr wird durch eine zugrundeliegende asyncio Ereignisschleife aktualisiert.