以前に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!」の画面が表示されるはずです。
コメント