add v22
This commit is contained in:
24
22-debian/Dockerfile
Normal file
24
22-debian/Dockerfile
Normal file
@@ -0,0 +1,24 @@
|
||||
FROM debian:bookworm-slim
|
||||
LABEL maintainer="Florian Overkamp <docker@flrn.eu>"
|
||||
|
||||
ADD asterisk-wrapper.sh /usr/local/sbin/asterisk-wrapper.sh
|
||||
ADD asterisk-build.sh /usr/local/sbin/asterisk-build.sh
|
||||
|
||||
RUN apt-get update && apt-get upgrade -y && \
|
||||
apt-get -y install pkg-config curl msmtp sox mpg123 && \
|
||||
asterisk-build.sh && rm /usr/local/sbin/asterisk-build.sh && \
|
||||
cd /etc/asterisk && tar czf /etc/ast-conf.tgz *
|
||||
|
||||
VOLUME /etc/asterisk
|
||||
VOLUME /var/spool/asterisk
|
||||
VOLUME /var/log/asterisk
|
||||
VOLUME /var/lib/asterisk/agi-bin
|
||||
VOLUME /var/lib/asterisk/sounds/prompts
|
||||
VOLUME /usr/local/bin
|
||||
|
||||
EXPOSE 5060/udp
|
||||
EXPOSE 5060
|
||||
|
||||
WORKDIR /etc/asterisk
|
||||
CMD ["/usr/local/sbin/asterisk-wrapper.sh"]
|
||||
|
||||
25
22-debian/asterisk-build.sh
Executable file
25
22-debian/asterisk-build.sh
Executable file
@@ -0,0 +1,25 @@
|
||||
#!/bin/bash
|
||||
|
||||
apt-get -y install build-essential libssl-dev libedit-dev uuid-dev libxml2-dev libsqlite3-dev
|
||||
|
||||
cd /usr/src
|
||||
curl -L http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-22-current.tar.gz > asterisk.tar.gz
|
||||
tar zxf asterisk.tar.gz
|
||||
cd asterisk-22.*
|
||||
# set compiler flags for cross system compatibility
|
||||
export ASTCFLAGS="-g -O2 -march=x86-64 -fstack-protector-strong -Wformat -Werror=format-security"
|
||||
# configure to use the bundled jansson libs (less dependancy on base image)
|
||||
./configure --with-jansson-bundled
|
||||
make
|
||||
make install
|
||||
make samples
|
||||
|
||||
cd /usr/src
|
||||
rm -rf *
|
||||
|
||||
apt-get -y purge build-essential
|
||||
apt -y autoremove
|
||||
|
||||
adduser --system --home /var/lib/asterisk --shell /sbin/nologin --group asterisk
|
||||
chown -R asterisk:asterisk /var/lib/asterisk
|
||||
|
||||
78
22-debian/asterisk-wrapper.sh
Executable file
78
22-debian/asterisk-wrapper.sh
Executable file
@@ -0,0 +1,78 @@
|
||||
#!/bin/bash
|
||||
|
||||
echo "========================================="
|
||||
echo " Asterisk container starting up "
|
||||
echo "========================================="
|
||||
|
||||
if [[ ! -f /etc/asterisk/asterisk.conf ]]
|
||||
then
|
||||
# extract default distro config in volume
|
||||
echo " -- No asterisk.conf found, unpacking distribution config for production"
|
||||
cd /etc/asterisk
|
||||
tar zxf /etc/ast-conf.tgz
|
||||
|
||||
# (also) extract default distro config in dpkg-dist for easy reference
|
||||
rm -rf dpkg-dist
|
||||
mkdir dpkg-dist
|
||||
cd dpkg-dist
|
||||
tar zxf /etc/ast-conf.tgz
|
||||
else
|
||||
# extract default distro config in dpkg-dist for easy reference
|
||||
echo " -- Existing asterisk.conf found, unpacking distribution config in reference folder"
|
||||
cd /etc/asterisk
|
||||
rm -rf dpkg-dist
|
||||
mkdir dpkg-dist
|
||||
cd dpkg-dist
|
||||
tar zxf /etc/ast-conf.tgz
|
||||
fi
|
||||
|
||||
# ensure cdr-csv subdir exists
|
||||
mkdir -p /var/log/asterisk/cdr-csv
|
||||
|
||||
# fix permissions
|
||||
chown -R asterisk:asterisk /etc/asterisk
|
||||
chmod -R o+r /etc/asterisk
|
||||
chown -R asterisk:asterisk /var/spool/asterisk
|
||||
chmod -R o+r /var/spool/asterisk
|
||||
chown -R asterisk:asterisk /var/log/asterisk
|
||||
chmod -R o+r /var/log/asterisk
|
||||
|
||||
# detect public IPv4 address and configure for sip
|
||||
if [ -z "$IP4" ]; then
|
||||
IP4=`curl -4 -s http://icanhazip.com/`
|
||||
echo " -- Detected external (public) IPv4 address $IP4 (requested from icanhazip)"
|
||||
echo " -- You can override this by passing the IP4 environment variable with the desired address"
|
||||
else
|
||||
echo " -- Detected external (public) IPv4 address $IP4 (set from environment)"
|
||||
fi
|
||||
sed -ri "s/external_media_address=(([0-9]{1,3}\.){3}[0-9]{1,3})/external_media_address=$IP4/g" /etc/asterisk/pjsip.conf
|
||||
sed -ri "s/external_signaling_address=(([0-9]{1,3}\.){3}[0-9]{1,3})/external_signaling_address=$IP4/g" /etc/asterisk/pjsip.conf
|
||||
|
||||
# configure msmtp
|
||||
echo "account default" > /etc/msmtprc
|
||||
if [ -n "$SMARTHOST" ]; then
|
||||
IFS=: read -r SMARTHOST_HOST SMARTHOST_PORT <<< "$SMARTHOST"
|
||||
echo " -- Expanding '$SMARTHOST' as default SMTP relay"
|
||||
fi
|
||||
if [ -n "$SMARTHOST_HOST" ]; then
|
||||
echo "host $SMARTHOST_HOST" >> /etc/msmtprc
|
||||
echo " -- Set '$SMARTHOST_HOST' as default SMTP relay host"
|
||||
else
|
||||
echo "host mail" >> /etc/msmtprc
|
||||
echo " -- Using 'mail' as default SMTP relay host"
|
||||
fi
|
||||
if [ -n "$SMARTHOST_PORT" ]; then
|
||||
echo "port $SMARTHOST_PORT" >> /etc/msmtprc
|
||||
echo " -- Set $SMARTHOST_PORT as default SMTP relay port"
|
||||
else
|
||||
echo "port 587" >> /etc/msmtprc
|
||||
echo " -- Using 587 as default SMTP relay port"
|
||||
fi
|
||||
echo "from msmtp@asterisk" >> /etc/msmtprc
|
||||
# create symlink for asterisk to use
|
||||
ln -s /usr/bin/msmtp /usr/sbin/sendmail
|
||||
|
||||
# go live
|
||||
echo " -- Launching Asterisk"
|
||||
/usr/sbin/asterisk -f -p -U asterisk
|
||||
|
||||
Reference in New Issue
Block a user