Docker-compose с помощью приложения Python для urwid (ncurses)

Я создаю алгоритм, который должен работать на сервере вместе с небольшой базой данных.

докер-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, после чего начинают показываться определенные (обрезанные) части TUI. Компоненты TUI неправильно сформированы и не отвечают. Уничтожение процесса докера удерживает обрезанные части в терминале.

Возможный совет: TUI содержит часы с часами: мин: сек. Когда появляются обрезанные части, часы работают правильно, но они немедленно замирают. Часы обновляются с помощью основного цикла событий asyncio.

1 ответ

Это работает для меня:

докер-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 app и приложение, и контейнер mongo работают, и я получаю интерфейс терминала в контейнере приложения.

Другие вопросы по тегам