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