From 7dd8c4e589714b0afb9d9233fba068b934ee1e88 Mon Sep 17 00:00:00 2001 From: Mikhail Sennikov <mifls@yandex.ru> Date: Thu, 25 Jan 2024 17:45:27 +0300 Subject: [PATCH] docker-compose --- Backend/config.py | 3 -- Dockerfiles/Dockerfile | 15 +++--- ProxyNode/config.py | 4 +- ProxyNode/rtsp/rtsp_placeholder.py | 4 +- docker-compose.yml | 85 +++++++++++++++++++++++++----- 5 files changed, 85 insertions(+), 26 deletions(-) diff --git a/Backend/config.py b/Backend/config.py index 9770372..ab73115 100644 --- a/Backend/config.py +++ b/Backend/config.py @@ -5,9 +5,6 @@ credentials = { # Does not change server settings, used only for data substitution server = { - 'host': '192.168.1.106', - 'port': 8080, - 'rtsp_port': 8554, 'login_service_host': 'localhost', 'login_service_port': 8082, } diff --git a/Dockerfiles/Dockerfile b/Dockerfiles/Dockerfile index 28dca96..105963c 100644 --- a/Dockerfiles/Dockerfile +++ b/Dockerfiles/Dockerfile @@ -2,13 +2,14 @@ FROM python:3.11-alpine LABEL authors="Mikhail Sennikov" RUN apk add --no-cache ffmpeg -RUN pip3 install aiohttp fastapi lxml onvif-zeep-async uvicorn +RUN pip3 install aiohttp fastapi lxml onvif-zeep-async \ + uvicorn SQLAlchemy psycopg2 asyncpg bcrypt pytz -COPY Backend /ptz-proxy -WORKDIR /ptz-proxy/rtsp -RUN /ptz-proxy/rtsp/download_mediamtx.sh - -RUN mkdir -p /ptz-proxy/frontend +COPY ProxyNode/rtsp/mediamtx.yml + ProxyNode/rtsp/download_mediamtx.sh + /mediamtx/ +WORKDIR /mediamtx +RUN /mediamtx/download_mediamtx.sh WORKDIR /ptz-proxy -CMD ["python", "-m", "uvicorn", "main:app", "--reload", "--host", "0.0.0.0", "--port", "9000"] +CMD ["python", "run.py"] diff --git a/ProxyNode/config.py b/ProxyNode/config.py index 123c8e6..8b6f672 100644 --- a/ProxyNode/config.py +++ b/ProxyNode/config.py @@ -8,7 +8,7 @@ port = int(os.getenv("NODE_PORT", 8081)) database = { 'driver': "postgresql+asyncpg", - 'host': "localhost", + 'host': "postgres", 'port': 5432, 'database': "postgres", 'user': "postgres", @@ -28,3 +28,5 @@ services_to_proxy = { # 'Search', # 'Replay' } + +mediamtx_path = "/mediamtx/mediamtx" diff --git a/ProxyNode/rtsp/rtsp_placeholder.py b/ProxyNode/rtsp/rtsp_placeholder.py index 21406cf..ddc9a48 100644 --- a/ProxyNode/rtsp/rtsp_placeholder.py +++ b/ProxyNode/rtsp/rtsp_placeholder.py @@ -2,6 +2,8 @@ import asyncio import subprocess from asyncio import Task +import config + async def start_rtsp_server(): ffmpeg = None @@ -11,7 +13,7 @@ async def start_rtsp_server(): mediamtx = asyncio.create_task( start_service( "MediaMTX", - ["rtsp/mediamtx", "rtsp/mediamtx.yml"] + [config.mediamtx_path, "rtsp/mediamtx.yml"] ) ) await asyncio.sleep(3) diff --git a/docker-compose.yml b/docker-compose.yml index 29c84dc..9cab212 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,25 +1,82 @@ version: '3.8' services: - ptx-proxy: + postgres: + image: postgres + environment: + POSTGRES_DB: "postgres" + POSTGRES_USER: "postgres" + POSTGRES_PASSWORD: "password" + + ptz-proxy-master: build: context: . dockerfile: Dockerfiles/Dockerfile volumes: - - ./Backend/config.py:/ptz-proxy/config.py:ro - - ./Frontend/dist:/ptz-proxy/frontend:ro + - ./Backend:/ptz-proxy:ro ports: - - "0.0.0.0:8080:9000" - - "0.0.0.0:8554:8554" + - "0.0.0.0:8080:8080" + depends_on: + postgres: + condition: service_started + + ptz-proxy-node-1: + build: + context: . + dockerfile: Dockerfiles/Dockerfile + volumes: + - ./ProxyNode:/ptz-proxy:ro + ports: + - "0.0.0.0:8081:8081" + - "0.0.0.0:8551:8554" + depends_on: + ptz-proxy-master: + condition: service_started + + ptz-proxy-node-2: + build: + context: . + dockerfile: Dockerfiles/Dockerfile + volumes: + - ./ProxyNode:/ptz-proxy:ro + ports: + - "0.0.0.0:8083:8081" + - "0.0.0.0:8553:8554" depends_on: - frontend-builder: - condition: service_completed_successfully + ptz-proxy-master: + condition: service_started - frontend-builder: - image: node:alpine + ptz-proxy-node-3: + build: + context: . + dockerfile: Dockerfiles/Dockerfile volumes: - - ./Frontend:/ptz-proxy/frontend:rw - working_dir: /ptz-proxy/frontend - command: > - /bin/sh -c - "npm install && npm run build && npm prune --production" + - ./ProxyNode:/ptz-proxy:ro + ports: + - "0.0.0.0:8083:8081" + - "0.0.0.0:8553:8554" + depends_on: + ptz-proxy-master: + condition: service_started + + ptz-proxy-node-4: + build: + context: . + dockerfile: Dockerfiles/Dockerfile + volumes: + - ./ProxyNode:/ptz-proxy:ro + ports: + - "0.0.0.0:8084:8081" + - "0.0.0.0:8554:8554" + depends_on: + ptz-proxy-master: + condition: service_started + +# frontend-builder: +# image: node:alpine +# volumes: +# - ./Frontend:/ptz-proxy/frontend:rw +# working_dir: /ptz-proxy/frontend +# command: > +# /bin/sh -c +# "npm install && npm run build && npm prune --production" -- GitLab