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
以上です。