「Asterisk on Docker」の版間の差分
ナビゲーションに移動
検索に移動
編集の要約なし |
細 Takatyan がページ「利用者:Takatyan/sandbox/Asterisk on Docker」を「Asterisk on Docker」に移動しました |
(相違点なし)
|
2025年9月1日 (月) 12:59時点における最新版
Asterisk 22をDockerで動かそう! Dockerとは、コンテナ仮想化のためのプラットフォームです。
Asteriskには公式のDockerイメージがないようです。 インターネットを探すと、有志が構築したイメージやDockerfileがありますが、古かったり、マルチステージビルドでなく最終イメージのサイズが大きかったりして、良さそうなものがなかったので、独自のDockerfileを作成しました。
Linuxで、x86_64のマシンで試しています。OpusコーデックがARM非対応のため、ARMは試しておりません。
Dockerfile
このDockerfileは、Opusコーデックを使用しています。
FROM debian:bookworm-slim AS base RUN echo "APT::Install-Recommends 0;" >> /etc/apt/apt.conf.d/01norecommends \ && echo "APT::Install-Suggests 0;" >> /etc/apt/apt.conf.d/01norecommends \ && apt-get update -qq \ && apt -y install readline-common uuid libxml2 libsqlite3-0 libssl3 net-tools dnsutils ca-certificates curl xmlstarlet \ && apt-get autoremove -y \ && apt-get clean \ && rm -rf /var/lib/apt/lists /var/cache/apt/archives FROM base AS build ARG asterisk_version=22.5.1 ENV TZ Asia/Tokyo WORKDIR /build RUN apt-get update \ && apt -y install build-essential libedit-dev uuid-dev pkg-config libxml2-dev libsqlite3-dev sqlite3 libssl-dev net-tools dnsutils \ \ && curl http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-${asterisk_version}.tar.gz | tar xfz - \ && cd /build/asterisk-${asterisk_version} \ && ./configure --with-jansson-bundled \ && make menuselect.makeopts \ && menuselect/menuselect --enable codec_opus --enable CORE-SOUNDS-EN-WAV --disable CORE-SOUNDS-EN-GSM menuselect.makeopts \ && make -j$(nproc) \ && make install \ && apt-get autoremove -y \ && apt-get clean \ && rm -rf /var/lib/apt/lists /var/cache/apt/archives \ && cd / && tar cfz libasterisk.tar.gz usr/lib/libasteriskpj.* usr/lib/libasteriskssl.* FROM base RUN mkdir /usr/lib/asterisk COPY --from=build /usr/lib/asterisk/modules /usr/lib/asterisk/modules COPY --from=build /usr/sbin/astcanary /usr/sbin/astdb2bdb /usr/sbin/astdb2sqlite3 /usr/sbin/asterisk /usr/sbin/astversion /usr/sbin/astgenkey /usr/sbin/autosupport /usr/sbin/ COPY --from=build /usr/sbin/rasterisk /usr/sbin/safe_asterisk /usr/sbin/ COPY --from=build /var/lib/asterisk /var/lib/asterisk COPY --from=build /libasterisk.tar.gz /libasterisk.tar.gz RUN tar xf /libasterisk.tar.gz \ && cd /var/lib/asterisk/sounds \ && curl -o core-sound-ja.tgz -L https://github.com/takao-t/asterisk-sound-ja/raw/refs/heads/master/core-sound-ja.tgz \ && tar xf core-sound-ja.tgz \ && rm -f core-sound-ja.tgz ENTRYPOINT ["/usr/sbin/asterisk", "-f", "-C", "/etc/asterisk/asterisk.conf"]
イメージをビルドする
docker build --build-arg asterisk_version=22.5.1 -t asterisk:22.5.1 .
このイメージはビルドすると409MB程度となります。
イメージを起動する
設定ファイルは別途用意してください。
通常、Dockerでイメージを起動する場合、ネットワークはbridgeネットワークを用い、-pオプションでポートを指定しますが、Asteriskでbridgeネットワークを使用すると、UDPポートでの通信がうまく行かなかったため、--network hostを使い、直接Dockerホストのポートで待ち受けをさせます。
例えば、設定ファイルは./asterisk-conf、ログファイルは./asterisk-logに配置する場合、
docker run -d --name asterisk --rm --network host -v $(pwd)/asterisk-conf:/etc/asterisk:ro -v $(pwd)/asterisk-log:/var/log/asterisk:rw asterisk:22.5.1
特に問題なく動けばOKです。
Asterisk CLIに入る
docker exec -it asterisk asterisk -vvvvcr