Необходимо создать сервис, с помощью которого можно было бы внедрить в любой веб-сайт механизм трансляции видеопотока с веб-камеры одного пользователя на страницу другого. Минимальная конфигурация включает передачу одного потока 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
Создаем 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 .