Docker compose with urwid(ncurses)Python应用程序

Docker compose with urwid(ncurses)Python应用程序,python,docker-compose,python-asyncio,tui,urwid,Python,Docker Compose,Python Asyncio,Tui,Urwid,我正在创建一个需要在服务器上运行的算法,以及一个小型数据库 docker-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 R

我正在创建一个需要在服务器上运行的算法,以及一个小型数据库

docker-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(urwid)应用程序,它将终端转换为TUI以监控算法。当我在我的笔记本电脑上单独运行应用程序时,它会像预期的那样工作,终端变成TUI。当使用命令“docker compose up”运行时,终端首先显示docker和mongo的stdout,然后开始显示TUI的某些(剪裁)部分。TUI组件格式错误且无响应。终止docker进程会将裁剪的部分保留在终端中

可能的提示: TUI包含一个小时:分钟:秒的运行时钟。当被剪断的部分出现时,时钟是正确的,但它立即冻结。时钟由底层异步IO事件循环更新。

这对我来说很有用:

docker-compose.yml

version: '3'
services:
  app_db:
    container_name: appDB
    image: mongo:latest

  app:
    command: python -u /usr/src/app/app.py
    container_name: app
    build: .
    links:
    - app_db
    stdin_open: true
    tty: true
运行docker compose run应用程序时,应用程序和mongo容器都在运行,我在应用程序容器中获得了一个终端接口