46 lines
2.6 KiB
Markdown
46 lines
2.6 KiB
Markdown
# Сборка и запуск в Docker
|
||
|
||
Краткие инструкции по сборке и запуску контейнера локально.
|
||
|
||
Собрать образ:
|
||
|
||
```bash
|
||
docker build -t camera_server:latest .
|
||
```
|
||
|
||
Запустить контейнер:
|
||
|
||
```bash
|
||
docker run --rm -p 8000:8000 \
|
||
-v "$(pwd)/static:/app/static" \
|
||
-v "$(pwd)/templates:/app/templates" \
|
||
--name camera_server camera_server:latest
|
||
```
|
||
|
||
Или с помощью docker-compose:
|
||
|
||
```bash
|
||
docker-compose up --build
|
||
```
|
||
|
||
Примечания:
|
||
- Если у вас headless-сервер и вы не используете GUI-возможности OpenCV, рассмотрите замену `opencv-python` на `opencv-python-headless` в `req.txt`.
|
||
- При проблемах со сборкой на некоторых платформах установите необходимые системные пакеты (в Dockerfile уже перечислены распространённые зависимости).
|
||
|
||
Разделение адресов для биндинга и отображения (важно)
|
||
- BIND_HOST — адрес, на котором uvicorn внутри контейнера будет слушать соединения. По умолчанию это 0.0.0.0 (в контейнере). Не ставьте сюда внешний IP хоста, если вы запускаете в контейнере.
|
||
- PUBLIC_HOST (или ADVERTISED_HOST) — адрес, который будет показан в UI (dashboards, ws-URL). Укажите сюда реальный IP хоста (например, 192.168.0.112) или публичный адрес.
|
||
|
||
Пример `.env` для корректной работы в Docker:
|
||
|
||
```
|
||
# BIND_HOST указывает, на каком интерфейсе внутри контейнера слушать (оставьте 0.0.0.0)
|
||
BIND_HOST=0.0.0.0
|
||
# PORT — хостовый порт (docker-compose подставит его в маппинг)
|
||
PORT=8000
|
||
# PUBLIC_HOST — адрес, который будет отображаться в UI (реальный адрес машины)
|
||
PUBLIC_HOST=192.168.0.112
|
||
```
|
||
|
||
Если в `.env` у вас был `HOST=192.168.0.112`, то Docker раньше пробрасывал эту переменную в контейнер и uvicorn пытался биндиться на этот адрес — внутри контейнера такого адреса может не быть, и bind завершался ошибкой `cannot assign requested address`. Поэтому важно разделять `BIND_HOST` (bind) и `PUBLIC_HOST` (advertised).
|