LoginSignup
7
2

More than 5 years have passed since last update.

Google App Engineにサードパーティパッケージが必要なアプリのデプロイ

Last updated at Posted at 2018-01-08

Google App Engineにサードパーティパッケージが必要なアプリのデプロイ

Google Cloud Platformに含まれていない言語・パッケージを使用するには、Dockerfileを使って定義したCustom Runtimes上で実行させる必要があります。

今回は、この記事で作ったDiscordのBotをApp Engineにデプロイするまでを記事にします。

Note:
このBotでは音声ファイルを扱うためサードパーティパッケージが必要

はじめる前に

事前に以下の作業が必要です。
詳細はここの「Before you begin」にあります。

  1. GCPプロジェクトの作成
  2. Google Cloud SDKのダウンロードとインストール
  3. App Engineアプリケーションの作成

app.yamlファイルを作成

Custom Runtimeを使用するにはapp.yamlに以下の記述が必要です。

runtime: custom
env: flex

また、インスタンスの数を1つにするよう設定します。

manual_scaling:
  instances: 1

Note:
インスタンスの数だけBotがコマンドに反応するので、複数インスタンスあるとカオス

全部あわせるとこんな感じに。

app.yaml
runtime: custom
env: flex

manual_scaling:
  instances: 1

Dockerfileを作成

DockerfileBotの作成記事で扱ったのでここでは詳細は割愛します。

Dockerfile
FROM ruby:2.3.3

WORKDIR /app
ADD . /app

RUN apt-get update
RUN apt-get install libopus-dev -y
RUN apt-get install libsodium-dev -y
RUN apt-get update && apt-get install -y \
      wget \
      xz-utils
RUN wget http://johnvansickle.com/ffmpeg/releases/ffmpeg-release-64bit-static.tar.xz \
      && tar Jxvf ./ffmpeg-release-64bit-static.tar.xz \
      && cp ./ffmpeg*64bit-static/ffmpeg /usr/local/bin/

RUN bundle install

CMD ["ruby", "team_bot.rb"]

Note:
Dockerfileapp.yamlは同じディレクトリに配置する必要があります

App Engineにデプロイする

app.yamlDockerfileの準備ができればあとは以下を実行すればデプロイできます。

$ gcloud app deploy

Future Work

GitLab CIからApp Engineに自動デプロイできるようにしようと考えてます。

7
2
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
7
2