Memento memo.

Today I Learned.

Elixir ApplicationをGAEにデプロイ

GAEの説明を見る限り、メジャー言語しか対応してなさそうに見えたのですが、 Docker (Custom Runtimes) を選択すれば何でも動かせるそうです。

EBSもGAEもDockerさえ使えばどんなRuntimeでも使える => Elixirも動かせる!!!

ということでGAEにElixir製のbotをデプロイしてみました。

deploy

https://cloud.google.com/appengine/docs/flexible/custom-runtimes/quickstart を参考に。

Dockerfile

Dockerfileの設定はこんな感じです。

Elixir製Hubot風BotフレームワークのHedwigでSlack Botを作る - Memento memo. で作成したbotをデプロイしました。

FROM msaraiva/elixir-dev
MAINTAINER shotat

RUN mkdir /app
COPY . /app/
WORKDIR /app
RUN mix do deps.get, compile

CMD ["mix", "run", "--no-halt"]

app.yaml

runtime: custom
vm: true
env_variables:
  ELIXIR_BOT_TOKEN: xxxxxxxxxxxxxx

token系については、実行時に環境変数で渡すのが良いみたいです。 ここに設定していいのかは若干謎ですが、Dockerfile内にべた書きするよりマシなので一旦これで。

deploy

事前にprojectの作成 & SDKのインストールの設定が済んでいれば、以下のコマンドを実行するだけでdeployできます。

$ gcloud app deploy

以上です。