Some checks failed
Docker Build and Push / build-and-push (push) Has been cancelled
81 lines
2.4 KiB
Docker
81 lines
2.4 KiB
Docker
# Use Debian 12 slim as the base image
|
|
FROM debian:12-slim
|
|
|
|
# Install dependencies (minimal set)
|
|
RUN apt-get update -y && \
|
|
apt-get install -y --no-install-recommends \
|
|
gnupg2 \
|
|
wget \
|
|
lsb-release \
|
|
ca-certificates \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Add FreeSWITCH public repo via build-arg
|
|
ARG SW_TOKEN
|
|
RUN wget --http-user=signalwire --http-password=${SW_TOKEN} \
|
|
-O /usr/share/keyrings/signalwire-freeswitch-repo.gpg \
|
|
https://freeswitch.signalwire.com/repo/deb/debian-release/signalwire-freeswitch-repo.gpg && \
|
|
echo "machine freeswitch.signalwire.com login signalwire password ${SW_TOKEN}" > /etc/apt/auth.conf && \
|
|
chmod 600 /etc/apt/auth.conf && \
|
|
echo "deb [signed-by=/usr/share/keyrings/signalwire-freeswitch-repo.gpg] https://freeswitch.signalwire.com/repo/deb/debian-release/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/freeswitch.list && \
|
|
apt-get update -y
|
|
|
|
# Install FreeSWITCH with core + logging modules
|
|
RUN apt-get install -y --no-install-recommends \
|
|
freeswitch-meta-vanilla \
|
|
# Core modules
|
|
freeswitch-mod-commands \
|
|
freeswitch-mod-sofia \
|
|
freeswitch-mod-dialplan-xml \
|
|
freeswitch-mod-loopback \
|
|
freeswitch-mod-event-socket \
|
|
# Logging modules
|
|
freeswitch-mod-console \
|
|
freeswitch-mod-logfile \
|
|
freeswitch-mod-syslog \
|
|
freeswitch-mod-graylog2 \
|
|
&& apt-get clean \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Configure logging directories and permissions
|
|
RUN mkdir -p \
|
|
/etc/freeswitch \
|
|
/var/lib/freeswitch/recordings \
|
|
/var/log/freeswitch \
|
|
/usr/share/freeswitch/scripts && \
|
|
chown -R freeswitch:freeswitch \
|
|
/etc/freeswitch \
|
|
/var/lib/freeswitch \
|
|
/var/log/freeswitch \
|
|
/usr/share/freeswitch/scripts
|
|
|
|
# Copy default logging config (optional)
|
|
# COPY conf/autoload_configs/logfile.conf.xml /etc/freeswitch/autoload_configs/
|
|
|
|
# Expose ports
|
|
EXPOSE 5060/tcp 5060/udp
|
|
EXPOSE 5080/tcp 5080/udp
|
|
EXPOSE 8021/tcp
|
|
EXPOSE 16384-32768/udp
|
|
|
|
# Runtime configuration
|
|
USER freeswitch
|
|
WORKDIR /usr/share/freeswitch
|
|
|
|
# Healthcheck
|
|
HEALTHCHECK --start-period=15s --interval=30s --timeout=5s \
|
|
CMD fs_cli -x "status" | grep -q "UP" || exit 1
|
|
|
|
# Start command with complete path specification
|
|
CMD ["freeswitch", \
|
|
"-u", "freeswitch", \
|
|
"-g", "freeswitch", \
|
|
"-nonat", \
|
|
"-nf", \
|
|
"-nc", \
|
|
"-rp", \
|
|
"-conf", "/etc/freeswitch", \
|
|
"-log", "/var/log/freeswitch", \
|
|
"-db", "/var/lib/freeswitch/db"]
|
|
TEST=blocked
|