...
WCS can be used in Docker with official Docker image since build 5.2.458
Docker deployment example
...
Code Block | ||||
---|---|---|---|---|
| ||||
sudo docker pull flashphonerofficialflashphoner/webcallserver |
2. Set up docker bridge network
Code Block | ||||
---|---|---|---|---|
| ||||
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 | ||||
---|---|---|---|---|
| ||||
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 | ||||
---|---|---|---|---|
| ||||
ssh root@192.168.1.10 |
5. Open Two Way Streaming example in local browser, publish a stream
...
Code Block | ||||
---|---|---|---|---|
| ||||
sudo docker stop wcs-docker-test |
License will be deactivated on container stop to prevent unnecessary billing.
Docker container configuration
...
Code Block | ||||
---|---|---|---|---|
| ||||
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 | ||||
---|---|---|---|---|
| ||||
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
The address chosen will be written to ip_local
parameter, for example
Code Block | ||
---|---|---|
| ||
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 | ||||
---|---|---|---|---|
| ||||
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:
and this too:
|
Additional instance configuration
...
22/tcp
- SSH (this port is active only if password or key access is set)554/tcp
- RTSP server port1935/tcp
- RTMP server port1935/udp
- RTMFP server port2001/tcp
- server CLI port7777/tcp
- server monitoring port8080-8084/tcp
- WS, HTTP, CDN ports8443-8445/tcp
- WSS, HTTPS ports8888/tcp
- HTTPS port (for older versions compatibility)9091/tcp
- HTTP port (for older versions compatibility)30000-35000/tcp
- TCP media ports30000-35000/udp
- UDP media ports50999/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 | ||
---|---|---|
| ||
ulimit: open files: cannot modify limit: Operation not permitted |
Solution: set open files limit in container parameters when launching it
Code Block | ||||
---|---|---|---|---|
| ||||
docker run --ulimit nofile=100000:100000 \
-e LICENSE=license_number -e PASSWORD=secret \
--name webcallserver-instance --rm webcallserver:latest |
2. It is not recommended to use Docker on Windows due to port forwarding issues
Symptoms: WCS container is running but not available via SSH, HTTP/HTTPS, or WebRTC connection is not establishing when container is deployed in Docker on Windows
Solution: use Docker on Linux, or launch WCS in WSL 2