「Asterisk on Docker」の版間の差分

提供: VoIP-Info.jp
ナビゲーションに移動 検索に移動
Takatyan (トーク | 投稿記録)
ページの作成:「Asterisk 22をDockerで動かそう! Asteriskには公式のDockerイメージがないようです。 インターネットを探すと、有志が構築したイメージやDockerfileがありますが、古かったり、マルチステージビルドでなく最終イメージのサイズが大きかったりして、良さそうなものがなかったので、独自のDockerfileを作成しました。 Linuxで、x86_64のマシンで試しています…」
 
Takatyan (トーク | 投稿記録)
Takatyan がページ「利用者:Takatyan/sandbox/Asterisk on Docker」を「Asterisk on Docker」に移動しました
 
(同じ利用者による、間の1版が非表示)
1行目: 1行目:
[[Asterisk 22]]をDockerで動かそう!
[[Asterisk 22]]をDockerで動かそう!
Dockerとは、コンテナ仮想化のためのプラットフォームです。


Asteriskには公式のDockerイメージがないようです。
Asteriskには公式のDockerイメージがないようです。
28行目: 29行目:
  && curl http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-${asterisk_version}.tar.gz | tar xfz - \
  && curl http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-${asterisk_version}.tar.gz | tar xfz - \
  && cd /build/asterisk-${asterisk_version} \
  && cd /build/asterisk-${asterisk_version} \
  && NOISY_BUILD=yes ./configure --with-jansson-bundled \
  && ./configure --with-jansson-bundled \
  && make menuselect.makeopts \
  && make menuselect.makeopts \
  && menuselect/menuselect --enable codec_opus --enable CORE-SOUNDS-EN-WAV --disable CORE-SOUNDS-EN-GSM menuselect.makeopts \
  && menuselect/menuselect --enable codec_opus --enable CORE-SOUNDS-EN-WAV --disable CORE-SOUNDS-EN-GSM menuselect.makeopts \
54行目: 55行目:


==イメージをビルドする==
==イメージをビルドする==
  docker build --build-arg asterisk_version=22.5.1 -t asterisk:22.5.1
  docker build --build-arg asterisk_version=22.5.1 -t asterisk:22.5.1 .


このイメージはビルドすると416MB程度となります。
このイメージはビルドすると409MB程度となります。


==イメージを起動する==
==イメージを起動する==
68行目: 69行目:


特に問題なく動けばOKです。
特に問題なく動けばOKです。
==Asterisk CLIに入る==
docker exec -it asterisk asterisk -vvvvcr

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