【構築手順】Rails Docker環境構築【Mac】

DockerDocker

以前にRailsの開発環境をDockerで構築に必要なファイルなどの説明を行いましたが、それを元に実際に環境を構築していきます。

必要なファイルについては以下の記事をご覧ください。

スポンサーリンク

手順

まずはターミナルを起動します。
そして上記の記事で準備したdocker-compose.yaml, Dockerfile, Gemfile, Gemfile.lockがあるフォルダに移動します。

cdコマンド(change directory)で自分のファイルを置いているディレクトリに移動します。

lsコマンド(list segments)で確認していただくとわかりますが、必要なファイルがあることを確認してください。

user-no-MacBook-Pro:work user$ cd waitingmuch
user-no-MacBook-Pro:waitingmuch user$ ls
Dockerfile		Gemfile			Gemfile.lock		docker-compose.yml

railsプロジェクトを作成

以下のコマンドでrailsプロジェクトを作成してください。

「docker-compose run web」はdocker-compose.ymlに定義した「web」のコンテナ(つまりRailsのコンテナ)でそれ以降のコマンド(rails以降)を実行するという意味です。

上記以降はrailsのプロジェクト作成のためのコマンドで「rails new」はrailsプロジェクト作成のコマンドになります。

「–force」はforceオプションで既存ファイルを上書きする。「–database=mysql」はMySQLを使用する設定のオプション、これによりMySQLを使用するように設定された状態で作成されます。

docker-compose run web rails new . --force --database=mysql

実行後、以下のように railsプロジェクトが作成されていると思います。

ls -l
total 64
-rw-rw-r--@  1 user  staff   205 Feb 13  2018 Dockerfile
-rw-rw-r--@  1 user  staff  1748 Feb  1 00:02 Gemfile
-rw-rw-r--@  1 user  staff  4395 Feb  1 00:03 Gemfile.lock
-rw-r--r--   1 user  staff   374 Feb  1 00:02 README.md
-rw-r--r--   1 user  staff   227 Feb  1 00:02 Rakefile
drwxr-xr-x  10 user  staff   320 Feb  1 00:02 app
drwxr-xr-x   8 user  staff   256 Feb  1 00:03 bin
drwxr-xr-x  14 user  staff   448 Feb  1 00:02 config
-rw-r--r--   1 user  staff   130 Feb  1 00:02 config.ru
drwxr-xr-x   3 user  staff    96 Feb  1 00:02 db
-rw-rw-r--@  1 user  staff   365 Feb 13  2018 docker-compose.yml
drwxr-xr-x   4 user  staff   128 Feb  1 00:02 lib
drwxr-xr-x   3 user  staff    96 Feb  1 00:02 log
drwxr-xr-x   9 user  staff   288 Feb  1 00:02 public
drwxr-xr-x   9 user  staff   288 Feb  1 00:02 test
drwxr-xr-x   4 user  staff   128 Feb  1 00:02 tmp
drwxr-xr-x   3 user  staff    96 Feb  1 00:02 vendor

次はGemfileに追記されたGemのインストールや作成されたファイルをコンテナ内にマウントするために一度ビルドを実行します。

docker-compose build

データベースの設定

データベースの設定ファイルは「アプリ名/config/database.yml」にあります。

ファイル内は以下のようになっていると思います。
こちらのパスワードとホストを変更していきます。

# MySQL. Versions 5.0 and up are supported.
#
# Install the MySQL driver
#   gem install mysql2
#
# Ensure the MySQL gem is defined in your Gemfile
#   gem 'mysql2'
#
# And be sure to use new-style password hashing:
#   http://dev.mysql.com/doc/refman/5.7/en/old-client.html
#
default: &default
  adapter: mysql2
  encoding: utf8
  pool: 5
  username: root
  password:
  host: localhost

今回は以下のように変更しましたが、自分がdocker-compose.ymlに記載した内容に合わせて変更してください。

docker-compose.ymlのMYSQL_ROOT_PASSWORDで設定しているものをpasswordに、MySQLサーバーのコンテナのサービス名である「db」を設定しています。

  password: password
  host: db

今度はrailsサーバーとMySQLサーバーを起動します。

docker-compose up -d

サーバーが起動しているか確認してください。
以下のコマンドで確認できます。

docker-compose ps

実行すると正しく起動していれば、以下のように表示されると思います。

      Name                     Command               State           Ports
-----------------------------------------------------------------------------------
waitingmuch_db_1    docker-entrypoint.sh mysqld      Up      3306/tcp, 33060/tcp
waitingmuch_web_1   bundle exec rails s -p 300 ...   Up      0.0.0.0:3000->3000/tcp

まだデータベースを作成していないので、以下のコマンドでDBを作成していきます。

「docker-compose run web」はdocker-compose.ymlに定義した「web」のコンテナ(つまりRailsのコンテナ)でそれ以降のコマンド(rails以降)を実行し、「bundle exec rake」はRails環境にインストールされているrakeコマンドを実行しています。
「rake db:create」でMySQL上にデータベースを作成しています。

docker-compose run web bundle exec rake db:create

接続確認

ここまでエラーなどでていなければ「http://localhost:3000/」に接続すると「Yay! You’re on Rails!」の画面が表示されるはずです。

フリーランスを目指すなら【テックパートナーズカレッジ】

未経験者向けWEBスクール【SHElikes】

コメント

タイトルとURLをコピーしました