Начиная со сборки 5.2.458, WCS доступен в виде официального Docker образа
Пример развертывания в Docker
Развернем WCS в Docker за несколько шагов:
1. Загрузите актуальную сборку с Docker Hub
sudo docker pull flashphonerofficial/webcallserver
2. Настройте docker сеть
sudo docker network create \ --subnet 192.168.1.1/24 \ --gateway=192.166.1.1 \ --driver=bridge \ --opt com.docker.network.bridge.name=br-testnet testnet
3. Запустите docker контейнер, указав номер ознакомительной или коммерческой лицензии
docker run \ -e PASSWORD=password \ -e LICENSE=license_number \ -e LOCAL_IP=192.168.1.10 \ --net testnet --ip 192.168.1.10 \ --name wcs-docker-test --rm -d flashphonerofficial/webcallserver:latest
4. Проверьте доступность контейнера по SSH
ssh root@192.168.1.10
5. Откройте страницу примера Two Way Streaming в локальном браузере и опубликуйте поток
6. Закройте страницу, остановите контейнер
sudo docker stop wcs-docker-test
При остановке контейнера лицензия будет деактивирована, чтобы избежать излишнего биллинга.
Настройка docker контейнера
Настройка сети
По умолчанию, IP адрес назначается контейнеру динамически. Если планируется использовать статический IP адрес, нужно указать его в параметрах команды docker run
и передать в контейнер при помощи переменной LOCAL_IP
:
docker run -e LICENSE=license_number -e PASSWORD=secret \ -e LOCAL_IP=static_ip \ --net your-docker-network \ --ip static_ip \ --name webcallserver-instance -d webcallserver:latest
Если docker узел находится в локально сети за NAT, и сервер должен быть доступен снаружи, необходимо указать внешний IP адрес в переменной EXTERNAL_IP
:
docker run -e LICENSE=license_number -e PASSWORD=secret \ -e LOCAL_IP=static_ip \ -e EXTERNAL_IP=external_ip \ --net your-docker-network \ --ip static_ip \ --name webcallserver-instance -d webcallserver:latest
Настройка параметров контейнера
При запуске в контейнер можно передавать следующие параметры:
PASSWORD
- пароль на доступ внутрь контейнера по SSH. Если эта переменная не определена, контейнер не будет доступен по паролюLICENSE
- номер лицензии WCS. Если эта переменная не определена, лицензия может быть активирована через веб-интерфейсLOCAL_IP
- локальный IP адрес контейнера, который будет записан в параметрip_local
в файле настроекflashphoner.properties
. Если эта переменная не определена, IP адрес контейнера будет определен автоматическиEXTERNAL_IP
- локальный IP адрес контейнера, который будет записан в параметрip
в файле настроекflashphoner.properties
. Если эта переменная не определена иLOCAL_IP
не определена, внешний IP адрес контейнера будет определен автоматическиCDN_ROLE
- роль контейнера в CDN. Если эта переменная не определена, контейнер будет работать как отдельно стоящий серверCDN_ENTRY_POINT
- адрес сервера-точки входа в CDN для данного контейнера. Если эта переменная не определена, точка входа не задаетсяCDN_GROUPS
- группы CDN, в которые должен входить контейнер. Если эта переменная не определена, контейнер не принадлежит ни к одной группе
Настройка docker томов
При запуске в контейнер могут быть смонтированы следующие тома:
/conf
- каталог дополнительных файлов конфигурации. Этот каталог может быть смонтирован только для чтения/usr/local/FlashphonerWebCallServer/hls
- каталог для сегментов HLS. Этот каталог должен быть смонтирован для записи/usr/local/FlashphonerWebCallServer/logs
- каталог для логирования. Этот каталог должен быть смонтирован для записи/usr/local/FlashphonerWebCallServer/media
- каталог с файлами для воспроизведения VOD. Этот каталог может быть смонтирован только для чтения. Этот каталог может быть быть общим с другими экземплярами WCS/usr/local/FlashphonerWebCallServer/records
- каталог для файлов записей потоков. Этот каталог должен быть смонтирован для записи. Этот каталог может быть быть общим с другими экземплярами WCS
Пример запуска контейнера со всеми смонтированными томами:
docker run -e LICENSE=license_number -e CDN_ROLE=origin \ -v /opt/wcs/conf:/conf \ -v /opt/wcs/logs:/usr/local/FlashphonerWebCallServer/logs \ -v /opt/wcs/hls:/usr/local/FlashphonerWebCallServer/hls \ -v /opt/wcs/media:/usr/local/FlashphonerWebCallServer/media \ -v /opt/wcs/records:/usr/local/FlashphonerWebCallServer/records \ --name webcallserver-instance -d webcallserver:latest
Дополнительная настройка
В каталог, смонтированный как том /conf
, могут быть помещены следующие файлы настроек
id_rsa.pub
- публичный SSH ключ для доступа к контейнеру. Если этот файл найден при запуске контейнера, будет работать SSH доступ в контейнер по соответствующему приватному ключу. В противном случае, если переменнаяPASSWORD
определена, контейнер будет доступен по заданному паролю. Если не определены ни публичный ключ, ни пароль, SSH сервис не будет запущенflashphoner.properties
- основной файл настроек сервера. Может быть использован для настройки экземпляра WCSwcs-core.properties
- файл настроек Java. Может использоваться для настройки памяти и подключения из JMClog4j.properties
- файл настроек логированияwss.jks
- файл хранилища ключей SSL сертификатов. Файл может быть подготовлен при помощи keytoolcdn_profiles.yml
- файл настройки профилей транскодирования в CDNdatabase.yml
- файл настройки пользователей и приложений REST hook*.sdp
- файлы настроек SDP
Все эти файлы могут быть использованы, например, для восстановления настроек экземпляра WCS из сохраненной копии и для автоматического развертывания. Файлы копируются в контейнер 'как есть', за исключением flashphoner.properties
:
- параметры
ip
иip_local
будут изменены (см описание переменнойIP_LOCAL
) - если переменная
CDN_ROLE
определена, но файл не содержит никаких настроек CDN, будут добавлены настройки по умолчанию
Порты контейнера
По умолчанию доступны следующие порты:
22/tcp
- SSH (этот порт активен, если настроен )554/tcp
- RTSP порт1935/tcp
- RTMP порт1935/udp
- RTMFP порт2001/tcp
- CLI порт7777/tcp
- порт мониторинга сервера8080-8084/tcp
- WS, HTTP, CDN порты8443-8445/tcp
- WSS, HTTPS порты8888/tcp
- HTTPS порт (для совместимости со старыми версиями)9091/tcp
- HTTP порт (для совместимости со старыми версиями)30000-35000/tcp
- TCP медиа порты30000-35000/udp
- UDP медиа порты50999/tcp
- JMX порт
Состав портов при необходимости может быть изменен при помощи параметров запуска docker run --expose
. В этом случае значения портов должны быть указаны в файлах настроек flashphoner.properties
и wcs-core.properties
, см выше