Начиная со сборки 5.2.458, WCS доступен в виде официального Docker образа
Развернем WCS в Docker за несколько шагов:
1. Загрузите актуальную сборку с Docker Hub
sudo docker pull flashphoner/webcallserver |
2. Настройте docker сеть
sudo docker network create \ --subnet 192.168.1.1/24 \ --gateway=192.168.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 flashphoner/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 flashphoner/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 |
Не допускается монтирование всего каталога /usr/local/FlashphonerWebCallServer/conf как тома, или отдельных файлов из этого каталога! Например, так делать нельзя:
и так тоже:
|
В каталог, смонтированный как том /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, см выше
1. При запуске контейнера нельзя изменить ограничение на количество открытых файлов изнутри контейнера.
Симптомы: при запуске контейнера в интерактивном режиме выводится сообщение
ulimit: open files: cannot modify limit: Operation not permitted |
Решение: установить ограничение на количество открытых файлов в параметрах запуска контейнера
docker run --ulimit nofile=100000:100000 \ -e LICENSE=license_number -e PASSWORD=secret \ --name webcallserver-instance --rm webcallserver:latest |
2. Не рекомендуется использовать Docker на Windows из-за проблем с пробросом портов
Симптомы: при развертывании образа в Docker под Windows контейнер запущен, но недоступен по SSH, по HTTP/HTTPS, не устанавливается WebRTC соединение
Решение: использовать Docker на Linux, либо запускать WCS в WSL 2