Начиная со сборки 5.2.458, WCS доступен в виде официального 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 |
При остановке контейнера лицензия будет деактивирована, чтобы избежать излишнего биллинга.
По умолчанию, 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 |
Если IP адрес назначается контейнеру динамически, и при этом контейнер имеет несколько сетевых интерфейсов (такое может быть, например, в случае использования интерфейсов docker хоста), на этапе запуска контейнера необходимо вручную выбрать IP адрес, к которому привяжется WCS сервер. В этом случае контейнер должен быть запущен в интерактивном режиме
docker run \ -e PASSWORD=password \ -e LICENSE=license_number \ --net host \ --name wcs-docker-test --rm -it flashphonerofficial/webcallserver:latest |
Скрипт запуска контейнера определит IP адреса всех интерфейсов и предложит ввести тот, который будет прослушивать WCS сервер
В параметр ip_local
будет записан выбранный IP адрес, например
ip_local=172.17.0.1 |
Настройка параметров контейнера
При запуске в контейнер можно передавать следующие параметры:
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, в которые должен входить контейнер. Если эта переменная не определена, контейнер не принадлежит ни к одной группеПри запуске в контейнер могут быть смонтированы следующие тома:
/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
, см выше