forked from Mirrors/freeswitch
104 lines
3.6 KiB
Markdown
104 lines
3.6 KiB
Markdown
About
|
|
-----
|
|
|
|
This is minimized official FreeSwitch docker container.
|
|
Container designed to run on host network.
|
|
Size of container decreased to 120MB (54MB compressed)
|
|
Significantly increased security:
|
|
1) removed all libs except libc, busybox, freeswitch and dependent libs.
|
|
2) removed 'system' API command from vanila config
|
|
3) updated FreeSwitch default SIP password to random value
|
|
|
|
Used environment variables
|
|
--------------------------
|
|
|
|
1) ```SOUND_RATES``` - rates of sound files that must be downloaded and installed. Available values ```8000```, ```16000```, ```32000```, ```48000```. May defined multiply values using semicolon as delimiter. Example ```SOUND_RATES=8000:16000```;
|
|
2) ```SOUND_TYPES``` - types of sound files that must be downloaded and installed. Available values music, ```en-us-callie```, ```en-us-allison```, ```ru-RU-elena```, ```en-ca-june```, ```fr-ca-june```, ```pt-BR-karina```, ```sv-se-jakob```, ```zh-cn-sinmei```, ```zh-hk-sinmei```. Example ```SOUND_TYPES=music:en-us-callie```;
|
|
3) ```EPMD``` - start epmd daemon, useful when you use mod_erlang and mod_kazoo FreeSwitch modules. Available values ```true```, ```false```.
|
|
|
|
Usage container
|
|
---------------
|
|
|
|
1) Creating volume for sound files. This may be skipped if you not use freeswitch MOH and other sound files.
|
|
```sh
|
|
docker volume create --name freeswitch-sounds
|
|
```
|
|
|
|
2) Stating container
|
|
```sh
|
|
docker run --net=host --name freeswitch \
|
|
-e SOUND_RATES=8000:16000 \
|
|
-e SOUND_TYPES=music:en-us-callie \
|
|
-v freeswitch-sounds:/usr/share/freeswitch/sounds \
|
|
-v /etc/freeswitch/:/etc/freeswitch \
|
|
safarov/freeswitch
|
|
```
|
|
|
|
systemd unit file
|
|
-----------------
|
|
You can use this systemd unit file on your hosts.
|
|
```sh
|
|
$ cat /etc/systemd/system/freeswitch-docker.service
|
|
[Unit]
|
|
Description=freeswitch Container
|
|
After=docker.service network-online.target
|
|
Requires=docker.service
|
|
|
|
|
|
[Service]
|
|
Restart=always
|
|
TimeoutStartSec=0
|
|
#One ExecStart/ExecStop line to prevent hitting bugs in certain systemd versions
|
|
ExecStart=/bin/sh -c 'docker rm -f freeswitch; \
|
|
docker run -t --net=host --name freeswitch \
|
|
-e SOUND_RATES=8000:16000 \
|
|
-e SOUND_TYPES=music:en-us-callie \
|
|
-v freeswitch-sounds:/usr/share/freeswitch/sounds \
|
|
-v /etc/kazoo/freeswitch/:/etc/freeswitch \
|
|
freeswitch'
|
|
ExecStop=-/bin/sh -c '/usr/bin/docker stop freeswitch; \
|
|
/usr/bin/docker rm -f freeswitch;'
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
```
|
|
Unit file can be placed to ```/etc/systemd/system/freeswitch-docker.service``` and enabled by command
|
|
```sh
|
|
systemd start freeswitch-docker.service
|
|
systemd enable freeswitch-docker.service
|
|
```
|
|
|
|
.bashrc file
|
|
------------
|
|
To simplify freeswitch managment you can add alias for ```fs_cli``` to ```.bashrc``` file as example bellow.
|
|
```sh
|
|
alias fs_cli='docker exec -i -t freeswitch /usr/bin/fs_cli'
|
|
```
|
|
|
|
How to create custom container
|
|
------------------------------
|
|
This container created from scratch image by addiding required freeswitch files packaged to tar.gz archive.
|
|
To create custom container:
|
|
1) install required FreeSwitch packages. Now supported debian dist
|
|
```sh
|
|
apt-get install freeswitch-conf-vanilla
|
|
```
|
|
2) clone freeswitch repo
|
|
```sh
|
|
git clone https://freeswitch.org/stash/projects/FS/repos/freeswitch/browse
|
|
```
|
|
3) execute ```make_min_archive.sh``` script
|
|
```sh
|
|
cd freeswitch/docker/base_image
|
|
./make_min_archive.sh
|
|
```
|
|
4) build custom container
|
|
```sh
|
|
docker build -t freeswitch_custom .
|
|
```
|
|
|
|
Read more
|
|
---------
|
|
|
|
[Dockerfile of official FreeSwitch container](https://freeswitch.org/stash/projects/FS/repos/freeswitch/browse/docker/release)
|