# syntax=docker/dockerfile:1.7 # # Imagem própria/controlada do FreeSWITCH (agente.md secao 19), usando os # pacotes pré-compilados do SignalWire em vez de compilar da fonte — build # de C/C++ e´ pesado demais pra VM de laboratorio (1.9GB RAM). FROM debian:trixie-slim ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update \ && apt-get install -y --no-install-recommends ca-certificates gnupg curl \ && rm -rf /var/lib/apt/lists/* # FREESWITCH_PAT só existe durante este RUN (BuildKit secret, nunca vira # camada da imagem) e o arquivo de credenciais do apt é apagado antes do fim # do MESMO RUN — agente.md secao 11: "a credencial nao devera permanecer na # imagem runtime". RUN --mount=type=secret,id=freeswitch_pat,required=true \ set -eu; \ FS_PAT="$(cat /run/secrets/freeswitch_pat)"; \ curl -fsSL -u "signalwire:${FS_PAT}" \ https://freeswitch.signalwire.com/repo/deb/debian-release/signalwire-freeswitch-repo.gpg \ -o /usr/share/keyrings/signalwire-freeswitch-repo.gpg; \ install -d -m 700 /etc/apt/auth.conf.d; \ printf 'machine freeswitch.signalwire.com\nlogin signalwire\npassword %s\n' "${FS_PAT}" \ > /etc/apt/auth.conf.d/freeswitch.conf; \ chmod 600 /etc/apt/auth.conf.d/freeswitch.conf; \ echo "deb [signed-by=/usr/share/keyrings/signalwire-freeswitch-repo.gpg] https://freeswitch.signalwire.com/repo/deb/debian-release/ trixie main" \ > /etc/apt/sources.list.d/freeswitch.list; \ apt-get update; \ apt-get install -y --no-install-recommends \ freeswitch-meta-vanilla \ freeswitch-conf-vanilla \ freeswitch-mod-xml-curl \ freeswitch-mod-callcenter \ freeswitch-mod-avmd \ freeswitch-mod-curl; \ rm -f /etc/apt/auth.conf.d/freeswitch.conf /etc/apt/sources.list.d/freeswitch.list; \ rm -rf /var/lib/apt/lists/* # Overrides mínimos por cima da config vanilla (agente.md secao 15: "carregar # somente o necessário"). Directory/dialplan/sip_profiles ficam na config # vanilla padrão por enquanto — serão substituídos por mod_xml_curl na fase # "Extensions/Trunks/Dialplan" (ver docs/FREESWITCH.md). COPY overrides/autoload_configs/modules.conf.xml /etc/freeswitch/autoload_configs/modules.conf.xml COPY overrides/autoload_configs/event_socket.conf.xml /etc/freeswitch/autoload_configs/event_socket.conf.xml COPY overrides/autoload_configs/acl.conf.xml /etc/freeswitch/autoload_configs/acl.conf.xml COPY entrypoint.sh /usr/local/bin/entrypoint.sh RUN chmod +x /usr/local/bin/entrypoint.sh EXPOSE 8021 ENTRYPOINT ["/usr/local/bin/entrypoint.sh"] CMD ["/usr/bin/freeswitch", "-nonat"]