【爆速】コマンド1つでRails6の環境を整える【Docker】

どーも、えびじゅんです。
Railsを使ってWebアプリを開発しているエンジニアです👨‍💻

今日はRailsアプリを開発する際の環境構築についてお話します。

 

以下の環境を、コマンドほぼ1つでローカルに構築することができます。

  • Rails: 6.0.2
  • Ruby: 2.7.0
  • Postgres: 11.x(メジャーバージョンのみ固定)

 

想定読者

  • ググればDockerを使えるレベルの人

 

キーワード

  • Git
  • Rails
  • Docker

 

先に結論

社会人なので先に結論から述べます。Docker使いましょう。

「Dockerの使い方わかりません。ぴえん🥺」

という人にはちょっと難しいです。

時間があるときにもっと簡単にしたもの作って公開します。
(本当にコマンド1発で作れるようにします)

 

詳しいことはGithubのReadMeに全て書いてます。
https://github.com/ebijun1007/rails6_template_on_docker

上記リポジトリをクローンして、docker-compose buildを実行すると環境構築終了です。

リファレンスは以下の通りです。

 

Railsの環境構築、どうしてる?

では本題に入ります。

みなさん、Railsアプリの開発環境どうしてますか?

 

Railsチュートリアラー「Cloud9使ってます🙆‍♂️」

Cloud9は良いサービスです。が、環境構築のノウハウを覚えることはできません。
なのでイケてないです。

 

 

 

初学者「ローカルにRails入れてます🙋‍♀️」

ローカル環境が汚れてしまいます。
(=他のRailsアプリケーションに悪影響を及ぼす可能性があります)
なのでイケてないです🙅‍♂️

 

 

 

アラサーエンジニア「Vagrantで仮想環境立ててます🙋‍♂️」

仮想環境を立てることでアプリを分離させることが出来るので、悪影響は出ません🙆‍♀️
でもメモリを大量に消費しまう点がイケてないです🙅‍♂️

 

 

 

はい、みなさん総じてイケてないです🙇‍♂️

 

 

どうすりゃええねん😡=>Docker使いましょう

Dockerを使いましょう。

🙋‍♀️Dockerってなんですか
→仮想環境立てられる良い感じのツールです。
→AWSと並んで習得必須になる技術です。

🙋‍♀️仮想環境ってなんですか
→PC内で、別のPCを仮想的に動かしているものだと思ってください。
→要するに二重人格みたいなものです。

🙋‍♀️Dockerの使い方わかりません。
→そのうち記事書きます。まずはぐぐってください。

→Qiitaに良い記事がありました。

 

MacにDockerをインストールする方法

おそらくみなさんMacを使っているかと思うのでMacを前提に説明します。

ターミナルを開いて以下のコマンド群を実行してください。

$ brew install docker
$ brew cask install docker
$ open /Applications/Docker.app

(このフェーズはDockerのインストールであって、Railsの環境構築では無いのでまだコマンド数のカウントには含めません🤭)

以上でDockerのインストール完了です。

$ docker --vesion

を実行して、バージョンが表示されることを確認しましょう。

 

DockerでRailsの環境構築

Docker周りが整ったので、早速Railsの環境構築をしましょう。

まずはこちらのリポジトリをクローンしてください。
https://github.com/ebijun1007/rails6_template_on_docker

$ git clone git@github.com:ebijun1007/rails6_template_on_docker.git

 

    dipコマンドについて

    dip.ymlという見慣れないファイルがあると思います。
    これはdip(Docker Interaction Process)コマンドを使うための設定ファイルです。

    ymlファイルにエイリアスを書くことで、docker-compose ~~ といった長いコマンドを省略することができます。

    また、起動するコンテナをコマンドごとに選べるので、メモリの節約にもなります。

     

    あとはReadMe通りにコマンドを実行するだけ

    1.  gem install dip を実行してdipをインストールします。
    2.  git clone でリポジトリをクローンします(先ほどの操作なので実行済み)
    3. docker-compose.ymlに含まれる app_name  を自分のアプリ名にリネームします。
    4. docker-compose build を実行し、Dockerイメージをビルドします。
    5. docker-compose exec app sh もしくは dip sh を実行してコンテナ内に入ります。
      (以下のネストした部分はコンテナ内での作業になります)

      1. お好きなオプションとともに rails new . を実行してRailsアプリの雛形を作成します。
        • 私はよくこのオプションを使用します。 rails new . -G -s --database=postgresql --skip-active-storage --skip-action-mailer --skip-active-job --skip-action-cable --skip-action-mailbox --skip-action-text --skip-turbolinks --skip-sprockets --skip-listen --skip-test-unit --webpacker --webpack=react .
      2. もし必要であれば bundle lock --add-platform x86-mingw32 x86-mswin32 x64-mingw32 java を実行してエラーを解決してください。
      3. vendorディレクトリは不要なのでrm -rf vendor で削除します。
      4. exit でコンテナ外に出ます。
        ここまででRailsアプリの雛形は完成です。
    6. dip provision を実行してデータベースの環境を整えます(dipコマンドの詳細はdip.ymlをご覧ください)
    7. dip rails s コマンドでRailsサーバを起動します。
    8.  http://localhost:3000/ にアクセスするとウェルカムページが表示されます!

     

    その他:dipで使えるコマンド

    railsコマンドだけでなく、bundle rake yarnなどもdipコマンド経由で実行することができます。

    ymlに設定を追記すればそのほかのコマンドをエイリアスとして登録することも可能なので、ぜひdip使ってみてください。

     

    コメントを残す

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

    このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

    ABOUTこの記事をかいた人

    青森県出身。公立はこだて未来大学に進学し、プログラミングを学びました。新卒で入社前にロシアに飛ばされかけましたが、なんやかんや都内でWebエンジニアとして働いています。色々なところを転々と旅しながら生きるのが夢です。