DockerでRails5 + MySQLの環境を立ち上げる

はじめに

こんにちは!広告パフォーマンス改善チームのリーダーの甲斐です。この記事ではDockerでRails+MySQLの環境を立ち上げ、 http://localhost:3000/でブラウザアクセスして Yay! You're on Rails!の画面が出るまでの手順をまとめています。Dockerの学習をしたいと思ったきっかけはGCPでKubernetesを使うのにDockerの基本知識もあったらいいなと思ったからです。

この記事はrails newしただけのデフォルトのRailsプロジェクトがすでにGithubにあることを前提としています。使うものは下記になります。

  • MacOS 10.13.4
  • Docker Community Edition 18.06.1-ce-mac73 (26764)
  • Github
  • Railsプロジェクト(5.2.1)

Gemfile

  • 基本的には rails newしただけのプロジェクトなのですが、 コンテナ立ち上げ時にエラーになったので少し修正しています。差分は下記です。

Dockerfile

  • Dockerを使うのでまずこのDockerfileを作っていきます

Dockerfileでしたいこと

  • Rails環境を作ります
  • Rails プロジェクトはGithubからCloneします
  • PrivateリポジトリなのでDockerfileにGithubの認証情報を渡してあげる必要があります
    • なので、事前にgithub用のsshキーの用意をお願いします
    • 用意したキーをカレントディレクトリの keysというディレクトリに格納しています
  • bundle installまでをDockerfileに定義します

docker-compose.yml

  • Rails本体を入れる web環境と、MySQLを入れる db環境を作っていきます
  • DBには mysql:5.7.23というDockerイメージを使います
    • 5.7以外にもイメージはあるのでこちらを参照してください
    • https://hub.docker.com/_/mysql/
  • Railsには↑の Dockerfileで生成されるイメージを使います

  • MYSQL_ROOT_PASSWORDにはRailsの config/databases.ymlに設定しているパスワードを入力してください

  • webには↑で作成した Dockerfileを指定します。こうすることで、この webというイメージはこの Dockerfileを使って作成されますよと明示的に指示している。
  • ここで、MySQLの環境は dbという名前で作成されます。よって、Railsの config/databases.ymlhostにもこの dbを入力してください

実行コマンド

  • 毎回同じコマンドを叩くのが面倒なので、イメージ作成からサーバ立ち上げまでの一連の処理を .shファイルにまとめていきます

シェル実行

とすると、イメージ作成からコンテナ起動までやってくれます。

ブラウザアクセス

  • ブラウザで localhost:3000にアクセスしてみてください。下記のような画面が出れば成功です

最後に

  • docker-composeをもう少し勉強してからDockerとk8sを組み合わせての環境構築に進もうと思います
アバター

甲斐貴彦

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

コメントする