Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

WCS can be used in Docker with official Docker image since build 5.2.458

Docker deployment example

...

Code Block
languagebash
themeRDark
sudo docker pull flashphonerofficialflashphoner/webcallserver

2. Set up docker bridge network

Code Block
languagebash
themeRDark
sudo docker network create \
 --subnet 192.168.1.1/24 \
 --gateway=192.166168.1.1 \
 --driver=bridge \
 --opt com.docker.network.bridge.name=br-testnet testnet

...

Code Block
languagebash
themeRDark
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 flashphonerofficialflashphoner/webcallserver:latest

4. Check if the container available by SSH

Code Block
languagebash
themeRDark
ssh root@192.168.1.10

Image RemovedImage Added

5. Open Two Way Streaming example in local browser, publish a stream

...

Code Block
languagebash
themeRDark
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

Dynamic IP address detection issues

When IP address should be set dynamically to the container, and the container has more than one network interface (this can happen for example when docker host interfaces are used), IP address to bind WCS server should be chosen manually while the container is launching. In this case, the container should be started in interacrive mode

Code Block
languagebash
themeRDark
docker run \
-e PASSWORD=password \
-e LICENSE=license_number \
--net host \
--name wcs-docker-test --rm -it flashphoner/webcallserver:latest

Container enrty point script detects all the IP addresses and asks to enter the address for WCS to bind to

Image Added

The address chosen will be written to ip_local parameter, for example

Code Block
themeRDark
ip_local=172.17.0.1

Environment variables reference

...

  • /conf - additional configuration files folder, the path starts from container root. This volume can be mounted as read-only
  • /usr/local/FlashphonerWebCallServer/hls - HLS segments folder. This volume must be mounted with write access
  • /usr/local/FlashphonerWebCallServer/logs - logging folder. This volume must be mounted with write access
  • /usr/local/FlashphonerWebCallServer/media - media files for VOD playback folder. This volume can be mounted as read-only. This volume can be shared with another Web Call Server instances
  • /usr/local/FlashphonerWebCallServer/records - stream recoding files folder. This volume must be mounted with write access. This volume can be shared with another Web Call Server instances

...

Code Block
languagebash
themeRDark
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
Warning

Do not mount whole folder /usr/local/FlashphonerWebCallServer/conf or separate files from this folder as volumes!

For example, this is not allowed:

Code Block
languagebash
themeRDark
docker run -e LICENSE=license_number -e PASSWORD=secret \
 -v /opt/wcs/conf:/usr/local/FlashphonerWebCallServer/conf \
 --name webcallserver-instance -d webcallserver:latest

and this too:

Code Block
languagebash
themeRDark
docker run -e LICENSE=license_number -e PASSWORD=secret \
 -v /opt/wcs/conf/flashphoner.properties:/usr/local/FlashphonerWebCallServer/conf/flashphoner.properties \
 --name webcallserver-instance -d webcallserver:latest

Additional instance configuration

...

  • 22/tcp - SSH (this port is active only if password or key access is set)
  • 554/tcp - RTSP server port
  • 1935/tcp - RTMP server port
  • 1935/udp - RTMFP server port
  • 2001/tcp - server CLI port
  • 7777/tcp - server monitoring port
  • 8080-8084/tcp - WS, HTTP, CDN ports
  • 8443-8445/tcp - WSS, HTTPS ports
  • 8888/tcp - HTTPS port (for older versions compatibility)
  • 9091/tcp - HTTP port (for older versions compatibility)
  • 30000-35000/tcp - TCP media ports
  • 30000-35000/udp - UDP media ports
  • 50999/tcp - JMX port

The ports can be changed using docker run --expose parameters if necessary. In this case, the actual port values should be set to flashphoner.properties and wcs-core.properties files, see description above

Known issues

1. Open files limit cannot be changed from inside container

Symptoms: the following message is displaing when container starts in interactive mode

Code Block
themeRDark
ulimit: open files: cannot modify limit: Operation not permitted

Solution: set open files limit in container parameters when launching it

Code Block
languagebash
themeRDark
docker run --ulimit nofile=100000:100000 \
 -e LICENSE=license_number -e PASSWORD=secret \
 --name webcallserver-instance --rm webcallserver:latest