はい、こんばんは。
ついに平成から令和へと元号が変わりました。平成生まれとしては寂しい限りですが、新たな時代でもアウトプット頑張って行きます。(最近サボりがちなのは内緒)
docker-composeを使ってRuby on Railsの環境構築
まずは作業用のディレクトリを作成する
mkdir railsproject #ディレクトリを新規作成
cd railsproject #作成したディレクトリに移動
※docker-composeを使用する場合、docker-compose.ymlが置いてあるディレクトリがコンテナ名やボリューム名の接頭辞として使われるので、ディレクトリ名には注意すること。具体的には、プロジェクト名でディレクトリを作成すると良い。
Dockerfileを作成
先ほど作成したディレクトリ内でDockerfileを作成する。お好きなエディタで作成してもらったら良い。Dockerはインデントにうるさいので、自分が使い慣れているエディタを使いことをオススメする。
ちなみに私はVScodeを使っているので、そちらから作成させてもらった。
railsproject/Dockerfile
FROM ruby:2.4.5 #ruby2.4.5の実行環境を指定。(他のバージョンでも良い)
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs #apt-get updateでrailsに必要なパッケージをインストール
RUN mkdir /myapp #プロジェクト用のディレクトリを作成
WORKDIR /myapp #workingディレクトリに設定
COPY Gemfile /myapp/Gemfile #Gemfileをプロジェクト内にコピー
COPY Gemfile.lock /myapp/Gemfile.lock #Gemfile.lockをコピー
RUN bundle install #bundle installを実行、Gemのインストールを行う
COPY . /myapp
Gemfile, Gemfile.lockの作成
railsproject/Gemfile
source 'https://rubygems.org'
gem 'rails', '5.0.0.1' #railsのバージョン指定
railsproject/Gemfile.lock
#新規ファイルを作成します。
#空で置いておきます。コマンドを事項すると自動的に入って行きます。
現在の状態
railsproject
Dockerfile Gemfile Gemfile.lock
上記3つのファイルがある状態です。
docker-compose.ymlの作成
railsproject
#新規ファイル作成
version: '3'
services: #2つの記述があるため、2つのイメージを起動するという想定
db:
image: postgres #postgressqlを使用する。
web:
build: . #dockerfileからイメージをビルド
command: bundle exec rails s -p 3000 -b '0.0.0.0' #docker-compose実行時に実行されるコマンド
volumes:
- .:/myapp
ports: #ポートの指定。localhost:3000で起動可能
- "3000:3000"
depends_on:
- db
のようになります。ここで私もハマったのですが、インデントがずれるとエラーで前に進んでくれません。もしエラーになった場合は、インデントか、記述を疑うと良いかもです。
railsをインストールする
ここまでくれば、あとはコマンド一つ入力するのみです。
railsproject
$docker-compose run web rails new . --force --database=postgresql
DBにはpostgresqlを指定、–forceオプションを利用しているので、ファイルが存在する場合には上書きされます。
これで実行すると、railsがインストールされているはずです。
終わりに
令和一発目はdocker-composeを使ってrailsをインストールする一連の流れをアウトプットしました。Dockerhubのrailsページやネット上の記事を参考にしながら作成して行きましたので、詳しいところはまだまだ知らないなあということで、勉強が必要な分野であると感じました。まつぁ、チーム開発において必要不可欠な知識であるので、継続して勉強していこうかと思いました。
それでは。
コメント