0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Rails はじめました [1. 環境構築]

Posted at

要件

  • ruby 2.7.4
  • Rails 6.1.4
  • redis latest
  • PostgreSQL 12.2
  • nginx 1.20

開発環境

  • macOS Big Sur
  • VSCode
  • Docker Desktop

VSCode プラグイン

Docker 環境

コンテナの構成

  • app
    • rails 6.1.4 が稼働する
    • ポート番号 3000 で listen
  • web
    • nginx 1.20 が稼働する
    • ポート番号 80 で listen
    • 受け取ったリクエストを app コンテナに渡す
  • pgsql
    • PostgreSQL 12.2 が稼働する
    • ポート番号 5432 で listen
  • rredis
    • redis が稼働する
    • ポート番号 6379 で listen
  • rmail
    • mailhog が稼働する
    • ポート番号 1025 でメールを listen
    • ポート番号 8025 で HTTP リクエストを listen

使い方

  • 前提として、make コマンドを実行できるようにしておくこと

    • 不可能な場合は、Makefile 内の各コマンドをコピペして実行すれば OK
  • 初回 (Rails プロジェクトを作成する)

    $ git clone git@github.com:soso555BoBs/env-rails.git
    $ cd env-rails
    $ make create-project # Install Rails project
    
    • 上記実行後 http://localhost:3000/ で動作確認
    • 以下の手順を全て行うので時間がかかります
      1. rails インストール
      2. build docker image
      3. docker container up
      4. bundle install
      5. webpacker install
      6. rake db:create
      7. container restart
  • 初回 (既存プロジェクトをインポートする)

    $ git clone git@github.com:soso555BoBs/env-rails.git
    $ cd env-rails
    $ git clone git@github.com:hogehoge/rails.git ./backend # Clone any project to the backend directory
    $ make init
    $ make up
    
  • 2 回目以降

    $ make up
    
  • コンテナ終了

    $ make down
    

詰まった点

  • bundle install した gem がコンテナを立ち上げる度に無くなる
    • gem がインストールされたディレクトリを永続化していないため
      • 永続化するために docker-compose.yml に以下記述を追加

        volumes:
          bundle-store:
         :
         :
        services:
          app:
            volumes:
              - type: volume
                source: bundle-store
                target: /usr/local/bundle
                  nocopy: true
        
        • nocopy: true のせいで、永続化しても更新されないため nocopy: true を削除
        • docker-compose run と build と up のタイミングに依り volume の内容に不整合が発生。以下記事により解決しました。

  • rails server 実行時に Webpacker configuration file not found エラーが発生する
    • bundle install の後に webpacker install を実行することで対応

所感

  • 実は「コンテナの構成」には嘘が書かれている。実装できていないので追々実装する。
  • volume の永続化の解決にものすごく苦労した。
    • きちんとオプションや記述形式を把握しない限りはコピペなんてするもんじゃない。
    • おかげで volume 周りの挙動について勉強になった
  • ひとまずこの環境を用いて転職活動アプリを作っていこうと思います。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?