LoginSignup
5
0

More than 1 year has passed since last update.

Elixirで作ったLINEボットをHacobuneでイゴかす

Last updated at Posted at 2021-12-22

https://qiita.com/advent-calendar/2021/docker
2021/12/23(木)の回です。

はじめに

What is Hacobune ?

Hacobuneは、当社が「インフラを意識しない世界を実現する」をビジョンに開発したPaaS型クラウドサービスです。スタートアップ企業や少人数でのサービスの開発を行うお客さまなど、スモールスタートでの開発に適しています。Hacobuneを利用することで、インフラの構築が不要となり、お客さまはアプリケーションの開発およびアップデートのみに専念することができ、サービスリリースのサイクルを加速させることが可能となります。

(https://www.sakura.ad.jp/information/announcements/2021/08/12/1968207782/)

ハイライト

Dockerfileをつくればでデプロイできちゃいます :rocket::rocket::rocket:

ソースコード

Dockerfile

:point_up::point_up_tone1::point_up_tone2::point_up_tone3::point_up_tone4::point_up_tone5: のガイドを参考にしています。

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へのデプロイ

:point_up::point_up_tone1::point_up_tone2::point_up_tone3::point_up_tone4::point_up_tone5:公式ドキュメントです。

事前準備

デプロイ方法は次の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

に従ってすすめるとよいです。
こんな感じです。

スクリーンショット 2021-12-17 0.57.15.png

  • ポートは4000です。
  • 外部公開は有効にします(LINEからHTTP Postしてもらうため)

あとは環境変数の設定を行ってください。
先述のbandit_line_botでは次の2つの環境変数を設定する必要があります。

  • CHANNEL_SECRET
  • CHANNEL_ACCESS_TOKEN

たったこれだけで、しかもいまなら無料!!! で、LINEボットをイゴかすことができます:tada::tada::tada:

$\huge{Thank\ you\ very\ much!!!}$

Wrapping up :lgtm::lgtm::lgtm::lgtm::lgtm::lgtm::lgtm::lgtm:

Enjoy docker!!!
Enjoy LINE!!!
Enjoy Hacobune!!!

人間五十年 下天の内をくらぶれば、夢幻のごとくなり。一度生を得て滅せぬ者のあるべきか

時は今あめが下知る五月かな

露と落ち露と消えにしわが身かななにはのことも夢のまた夢

親思ふ心にまさる親心 今日のおとづれ何と聞くらん


おまけ

Elixirを始めてみよう! とおもった、あなたに参考情報(クリスマス🎄プレゼント)を贈ります。:gift::gift::gift:
思い立ったが吉日です!!!

オススメの書籍 :books:

Webアプリケーションを楽しむなら

IoTを楽しむなら

AIを楽しむなら

コミュニティ

FCOvBkAUYAE6mL8.jpeg
@piacerex さん作 :pray::pray_tone1::pray_tone2::pray_tone3::pray_tone4::pray_tone5:


  1. 「動かしてみます」の意。おそらく西日本の方言、たぶん。NervesJPではおなじみ。少し古いオートレースの映像ですが、実況アナウンサーが「針2イゴきます」とはっきり言っています。https://autorace.jp/netstadium/SearchMovie/Movie/iizuka?date=2017-01-04&p=5&race_number=11&pg=  

  2. 大時計の針のこと。針がイゴいてある地点まで到達すると選手はスタートを切って良い発走の合図。針がイゴきはじめると(おそらく)選手は緊張するし、スタートはその後のレース展開に大きく影響するので、車券を握りしめている観客たちがもっとも緊張する瞬間であるため、先の尖った鋭いものを連想させる針は緊張の暗喩としても言い得て妙。 

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0