LoginSignup
3
2

More than 3 years have passed since last update.

GKEで自作コンテナのRails6を起動する

Posted at

はじめに

Rails6プロジェクトの新規作成からGKE上で動作させるまでを試した結果となります。
今回試したのは以下3点です。
- Dockerイメージ(Ruby公式 2.7.0)から新たにRails6用Dockerイメージを作成する
- 作成したDockerイメージをDockerHubへ登録
- DockerHubに登録したイメージを使ってGKEのノードを作成し起動する

手順

1.Dockerイメージの取得

$ docker pull ruby:2.7.0

2.プロジェクトディレクトリ、Gemfileの作成

$ mkdir project_name
$ cd project_name
$ docker run --rm -v "$PWD":/usr/src/project_name -w /usr/src/project_name ruby:2.7.0 bundle init

3.Gemfileの編集

以下のコメント箇所を外したくらいです

Gemfile
#gem 'rails'

4.Dockerファイルの用意

Docerfileの内容については以下の記事を参考にさせて頂きました。
https://qiita.com/togana/items/30b22fc39fe6f7a188ec

今回の主な変更点は以下の点になりました

  • yarnのリポジトリ設定(Rails6の起動にはwebpackerが必要で、Webpackerのインストールにはyarnが必要)
  • yarnのインストール(上記と同じ理由)
  • webpackerのインストール
Dockerfile
FROM ruby:2.7.0

ENV APP_ROOT /usr/src/rails6-base
WORKDIR $APP_ROOT

# yarnのリポジトリ設定(Rails6の起動の為に必要)
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list

# packageリストの更新
RUN apt-get update

# packageからのインストール
RUN apt-get install -y \
      nodejs \
      default-mysql-client \
      sqlite3 \
      yarn \
      --no-install-recommends

# packageインデックスファイルの削除
RUN rm -rf /var/lib/apt/lists/*

# Gemのインストール
COPY Gemfile $APP_ROOT
COPY Gemfile.lock $APP_ROOT
RUN \
  echo 'gem: --no-document' >> ~/.gemrc && \
  cp ~/.gemrc /etc/gemrc && \
  chmod uog+r /etc/gemrc && \
  bundle config --global build.nokogiri --use-system-libraries && \
  bundle config --global jobs 4 && \
  bundle install && \
  rm -rf ~/.gem

# webpackerがないとRails6を起動できないので
RUN bundle exec rails webpacker:install

COPY . $APP_ROOT

# 3000ポートをListern状態で起動
EXPOSE  3000
CMD ["bundle", "exec", "rails", "server", "-b", "0.0.0.0"]

5. railsプロジェクトの新規作成

Dockerイメージを作成する時にプロジェクトのファイルをイメージにコピーするので必要。

$ docker run --rm -it -v "$PWD":/usr/src/sample-ruby-gke developer_name/project_name bundle exec rails new .

6.Dockerイメージの生成

$ docker build -t developer_name/project_name .

7.Dockerイメージからコンテナの生成と起動

$ docker run -d -p 3000:3000 developer_name/project_name

8.ブラウザからアクセスする

ブラウザから以下のURLにアクセスしてRailsの画面が表示されることを確認
http://localhost:3000/

9.DockerHubへの登録

$ docker login
$ docker push developer_name/project_name:latest

DockerHubに登録ができたかは以下URLで確認できる
https://hub.docker.com/

10.DockerHubに登録されたDockerイメージからGKEノードを作成

以下、GCP Console画面です。
Kubernetes Engine -> ワークロード -> デプロイを選択すると以下の画面が表示されます。
スクリーンショット 2020-01-04 15.27.06.jpg
以下を選択し、後はデフォルトのままとしました。

  • 「既存コンテナイメージ」を選択
  • イメージパス:developer_name/project_name:latest (上記で作成しDockerHubに登録したものと同じものを選択)

11.GKEのサービスを作成し外部公開する

ポートを3000に設定した他は前回の4の手順以降と同じです。
https://qiita.com/bleu/items/f2f16ee34fb0039e8890

参考

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