DockerでRails5.2の環境を構築する その1 - 株式会社CoLabMix

DockerでRails5.2の環境を構築する その1

Railsアプリの開発環境を手軽に作るためにDockerでの構築を行なっていきます。

まず、最初にこちらの手順でも構築は問題ありませんが、手順があまり綺麗でないのでその辺りを整備したものを次に記載します。

次回:DockerでRails5.2の環境を構築する その2
https://developer-collaboration.com/2018/08/07/docker-rails5-2-2/

 

さて、手順の参考としては公式ドキュメントにある「Rails and PostgreSQL」を参考にします。
https://docs.docker.com/compose/rails/#connect-the-database

主な手順は以下のようになります。

1. rubyのイメージを利用したDockerコンテナでrails5.2をインストールしたイメージを作成。

2. 上記イメージとpostgresのイメージでコンテナを作成し、rails newでアプリの作成。

3. rails newしたデータとGemfileを利用してbundle installしたイメージを再作成。

4. コンテナを起動して「rake db:create」を実施。

 

構築環境の準備

どこか適当なディレクトリを作成し以下の6つのファイルを作成します。

最後の行の「ADD」コマンドはイメージ再作成の時から使われます。

 

 

 

 

 

こちらは上記は空ファイルです。

 

 

アプリ名を変更するときは「myapp」の部分を全て書き換えてください。

実際の環境構築ではDBのパスワードなども変更してください。

 

コンテナの作成

公式との大きな違いはアプリ環境やDBデータを直下でなく専用フォルダに移動しました。

以下のコマンドを実行します

 

ここで一旦、Railsのコンテナが作成され「rails new」でプロジェクトが作成されます。

こちらのファイルを利用してDockerイメージの再作成を行いたいので以下のコマンドを実行します。

 

bundleインストールの対象として「mini_racer」を利用したいのでコメントから削除しています。

ここで以下のコマンドを実施し、コンテナを起動します。

 

アプリ的にはlistenの状態にはなっていますが、DBが作成されていないので以下のコマンドを別ターミナルから実行します。

 

これでブラウザで「http://localhost:3000/」にアクセスすると無事Railsの初期画面が確認できます。

 

さて、これで「docker-compose up」を毎度実行すれば開発環境は起動するのですが、Dockerイメージの再作成をしたりと手順があまり洗練されていなかったので、次ではこちらを修正したいと思います。

 

尚、今回以下のサイトなどを参考にさせていただきました。

 

Rails 5.2 開発環境を Docker で構築する
https://developer.feedforce.jp/entry/2018/02/11/140012

Springが動くRails+MySQLなAPIサーバの開発環境をDocker Composeで作る
http://blog.kymmt.com/entry/compose-and-rails-api-with-spring

高速に開発できる Docker + Rails開発環境のテンプレートを作った
https://qiita.com/kawasin73/items/2253523be18e5afd994f

 

このブログは株式会社CoLabMixによる技術ブログです。

GCP、AWSなどでのインフラ構築・運用や、クローリング・分析・検索などを主体とした開発を行なっています。

Ruby on RailsやDjango、Pythonなどの開発依頼などお気軽にお声がけください。

開発パートナーを増やしたいという企業と積極的に繋がっていきたいです。

お問い合わせやご依頼・ご相談など

     

    関連記事

    1. WordPressでRESTAPIを使った画像の投稿と記事の投稿

    2. terraform構築手順〜EC2編〜

    3. CentOS7でscrapy-splashを使ってJavaScript…

    4. ZABBIXのアラートをSlackに飛ばす

    5. CentOS8に負荷試験ツールLocustを入れてのテスト その1

    6. terraformでAmazon VPC エントポイント(endpoi…