This is an inofficial Docker file for FreeSWITCH. There currently is no official Docker container available from Signalwire except for safarov/freeswitch which has not been updated for years and is currently stuck at version 1.6. This container tracks the official releases.
This Docker container is based on Alpine Linux instead of the Debian base image used by the example Dockerfiles. The container, in contrast to the default FreeSWITCH build, does not contain mod_av
and mod_signalwire
.
The container requires a data volume to store the configuration. FreeSWITCH also requires port forwarding of (possibly) a large number of ports. The ports required can be found in the FreeSWITCH documentation, but due to the nature of RTP, the large number of required ports pose an issue with Docker. It is therefore recommended to use host
networking mode with this image.
The container can be started via Docker using the following command, but it is recommended to use Docker Compose instead
docker run -d --net=host --cap-add SYS_NICE -v $(pwd)/configuration:/etc/freeswitch ghcr.io/patrickbaus/freeswitch-docker
The SYS_NICE
capability allows FreeSWITCH to adjust its niceness to improve real-time functionality.
An example docker-compose.yml file can be found in the repository and below.
services:
freeswitch:
image: ghcr.io/patrickbaus/freeswitch-docker
container_name: freeswitch
restart: always
cap_add: # Enable RT features
- SYS_NICE
network_mode: "host"
volumes:
- '/mnt/docker/freeswitch/configs/:/etc/freeswitch/'
- '/mnt/docker/freeswitch/logs/:/var/log/freeswitch/'
This compose file mounts two volumes into the container, one for the logs and the other for the config files. It also uses host
mode for networking and enables SYS_NICE
capabilities.
I follow the FreeSWITCH releases for version numbering. For the versions available, see the tags available for this repository.
- Patrick Baus - Initial work - PatrickBaus
This project is licensed under the GPL v3 license - see the LICENSE file for details.