Обучающая платформа.

Service for the video broadcasting. WebRTC Django socket.io./ Формулировка задачи. Старт проекта.

Необходимо создать сервис, с помощью которого можно было бы внедрить в любой веб-сайт механизм трансляции видеопотока с веб-камеры одного пользователя на страницу другого. Минимальная конфигурация включает передачу одного потока peer-to-peer одному клиенту. Максимальная - включает возможность передачи одного потока многим клиентам. При этом возникает необходимость в дополнительных затратах на медиа-сервер.

Трансляция проводится по протоколу WebRTC.

Сервис необходимо создать наиболее независимым от той технологии, на которой пострен целевой веб-сайт.

Для этого его необходимо реализовывать в виде микросервиса со своим REST API.

Данный сервис может быть расположен на собственном сервере и домене и обслуживать неограниченное количество сайтов.

На целевой сайт будет внедрятся внешний js скрипт, который будет взаимодействовать с сервером по пролоколу HTTP и Web-сокетам.

В качестве сборщика будем использовать gulp.

Создадим скрипт настройек компиляции из typescript в js.

Файл tsconfig.json.

Инициализируем npm репозиторий.

Устанавливаем компилятор Typescript

Создаем в папке src файл index.ts

{
    "compilerOptions": {
        "module": "commonjs",
        "target": "ES5",
        "outDir": "dist",
        "rootDir": "src"
    },
    "exclude": [
        "node_modules"
    ]
}
npm init
start page

Создаем Dockerfile.

3.8-alpine3.12 - тег образа

ссылка на документацию

Пробуем собрать.

В данном случае alpine не имеет установщика apt, это сильно урезанная версия Linux.

Пример как ставить в него программы.

FROM python:3.8-alpine3.12 AS python38
ENV PYTHONUNBUFFERED 1
RUN mkdir /app
WORKDIR /app
RUN apt update
RUN apt -y install libpq-dev netcat
COPY requirements.txt /app
RUN /usr/local/bin/python -m pip install --upgrade pip
RUN pip install -r requirements.txt
RUN mkdir /entry
COPY entrypoint.sh /entry
ENTRYPOINT ["/entry/entrypoint.sh"]
docker build .
Обучающая платформа.