https://qiita.com/advent-calendar/2021/docker
2021/12/23(木)の回です。
はじめに
- Elixirを楽しんでいますか
- 「Banditを利用してLINEボット開発を楽しむ(Elixir)」と題して、作ったLINEボットをさくらインターネットさんのHacobuneでイゴかしてみます1
What is Hacobune ?
Hacobuneは、当社が「インフラを意識しない世界を実現する」をビジョンに開発したPaaS型クラウドサービスです。スタートアップ企業や少人数でのサービスの開発を行うお客さまなど、スモールスタートでの開発に適しています。Hacobuneを利用することで、インフラの構築が不要となり、お客さまはアプリケーションの開発およびアップデートのみに専念することができ、サービスリリースのサイクルを加速させることが可能となります。
(https://www.sakura.ad.jp/information/announcements/2021/08/12/1968207782/)
ハイライト
Dockerfile
をつくればでデプロイできちゃいます
ソースコード
Dockerfile
のガイドを参考にしています。
ARG BUILDER_IMAGE="hexpm/elixir:1.12.0-erlang-24.0.1-debian-bullseye-20210902-slim"
ARG RUNNER_IMAGE="debian:bullseye-20210902-slim"
FROM ${BUILDER_IMAGE} as builder
# install build dependencies
RUN apt-get update -y && apt-get install -y build-essential git \
&& apt-get clean && rm -f /var/lib/apt/lists/*_*
# prepare build dir
WORKDIR /app
# install hex + rebar
RUN mix local.hex --force && \
mix local.rebar --force
# set build ENV
ENV MIX_ENV="prod"
# install mix dependencies
COPY mix.exs mix.lock ./
RUN mix deps.get --only $MIX_ENV
RUN mix deps.compile
COPY lib lib
RUN mix compile
RUN mix release
# start a new build stage so that the final image will only contain
# the compiled release and other runtime necessities
FROM ${RUNNER_IMAGE}
RUN apt-get update -y && apt-get install -y libstdc++6 openssl libncurses5 locales \
&& apt-get clean && rm -f /var/lib/apt/lists/*_*
# Set the locale
RUN sed -i '/en_US.UTF-8/s/^# //g' /etc/locale.gen && locale-gen
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8
WORKDIR "/app"
RUN chown nobody /app
# Only copy the final release from the build stage
COPY --from=builder --chown=nobody:root /app/_build/prod/rel/bandit_line_bot ./
USER nobody
ENTRYPOINT ["/app/bin/bandit_line_bot"]
CMD ["start"]
たぶん
に該当することをしているのだとおもいます。
Hacobuneへのデプロイ
公式ドキュメントです。
事前準備
デプロイ方法は次の3種類とのことです。
①パブリックのDockerイメージを使用
②プライベートのDockerイメージを使用
③GitHubレポジトリをHacobuneに接続して使用(Dockerfileが必須)
①パブリックのDockerイメージを使用を説明します。
dockerhubを使う例で書きます。
$ docker build -t bandit_line_bot .
$ docker tag bandit_line_bot <your_username>/bandit_line_bot
$ docker login
$ docker push <your_username>/bandit_line_bot
Hacobune
に従ってすすめるとよいです。
こんな感じです。
- ポートは
4000
です。 - 外部公開は有効にします(LINEからHTTP Postしてもらうため)
あとは環境変数の設定を行ってください。
先述のbandit_line_botでは次の2つの環境変数を設定する必要があります。
- CHANNEL_SECRET
- CHANNEL_ACCESS_TOKEN
たったこれだけで、しかもいまなら無料!!! で、LINEボットをイゴかすことができます
$\huge{Thank\ you\ very\ much!!!}$
Wrapping up
Enjoy docker!!!
Enjoy LINE!!!
Enjoy Hacobune!!!
人間五十年 下天の内をくらぶれば、夢幻のごとくなり。一度生を得て滅せぬ者のあるべきか
時は今あめが下知る五月かな
露と落ち露と消えにしわが身かななにはのことも夢のまた夢
親思ふ心にまさる親心 今日のおとづれ何と聞くらん
おまけ
Elixirを始めてみよう! とおもった、あなたに参考情報(クリスマス🎄プレゼント)を贈ります。
思い立ったが吉日です!!!
オススメの書籍
- プログラミングElixir(第2版) -- オーム社
- Elixir実践ガイド -- インプレス
- アルケミスト 夢を旅した少年 -- 角川文庫
Webアプリケーションを楽しむなら
IoTを楽しむなら
AIを楽しむなら
コミュニティ
-
elixir.jp Slack workspaceに参加してみてください
- マヂ、やさしい人ばっかりのコミュニティ
- あなたの困ったをきっと解決してくれるでしょう
- NervesJP Slack workspaceでは、NervesやIoTが好きな愉快なfolksたちがあなたの訪れを歓迎します
- たくさんのコミュニティがあります
- @kn339264 さん作の素敵な資料をご紹介します
- Elixirコミュニティ の歩き方〜国内オンライン編〜
@piacerex さん作
-
「動かしてみます」の意。おそらく西日本の方言、たぶん。NervesJPではおなじみ。少し古いオートレースの映像ですが、実況アナウンサーが「針2イゴきます」とはっきり言っています。https://autorace.jp/netstadium/SearchMovie/Movie/iizuka?date=2017-01-04&p=5&race_number=11&pg= ↩
-
大時計の針のこと。針がイゴいてある地点まで到達すると選手はスタートを切って良い発走の合図。針がイゴきはじめると(おそらく)選手は緊張するし、スタートはその後のレース展開に大きく影響するので、車券を握りしめている観客たちがもっとも緊張する瞬間であるため、先の尖った鋭いものを連想させる針は緊張の暗喩としても言い得て妙。 ↩