2
1

More than 1 year has passed since last update.

Dockerにおいてソースコードが即時反映されない問題について

Posted at

背景

現在就職のためのポートフォリオを作成しているのですがその際、Docker環境のrailsでソースコードを書 いているときにソースコードが即時反映されなかったので、即時反映される方法を記しておきます。

即時反映させる方法について

自分が調べた限りでは即時反映させる方法は2つありました。

一つ目ですが

config/environments/developments.rb
config.file_watcher = ActiveSupport::EventedFileUpdateChecker

これを・・・

config/environments/developments.rb
config.file_watcher = ActiveSupport::FileUpdateChecker

とすれば大丈夫です!

何をしているのか?

これは
・ファイルの保存イベントを監視するのか
・ファイルを追跡して変更を監視するのか
の違いがあるらしいです!

config/environments/developments.rb
config.file_watcher = ActiveSupport::EventedFileUpdateChecker

の状態だとファイルを追跡して変更を監視する状態になっています。
ですのでこれを

config/environments/developments.rb
config.file_watcher = ActiveSupport::FileUpdateChecker

に変更して、ファイルの保存イベントを監視する状態に変更してあげるとソースコードが即時反映されるようになります。
詳しく知りたい方は以下参考にしてみてください。
Class: ActiveSupport::EventedFileUpdateChecker | RubyDoc.info
Class: ActiveSupport::FileUpdateChecker

2つ目の方法ですが
開発ディレクトリをDockerコンテナにマウントすることで編集時に即時反映することが可能です。

どういうことかというと・・・

docker-compose.yml
version: '3'
services:
  db:
    platform: linux/x86_64
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: root
    ports:
      - "3306:3306"
    volumes:
      - ./tmp/db:/var/lib/mysql

  mangabestgram:
    build: .
    command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
    volumes:
      - .:/mangabestgram
    ports:
      - "3000:3000"
    depends_on:
      - db

開発環境一式をdocker-composeで管理しているので、docker-compose.ymlで上記のようにvolumesの設定をすることで、実行ディレクトリをそのままdockerのアプリ実行ディレクトリにマウントすることができます。

docker-compose.yml
volumes:
      - .:/mangabestgram #この部分でマウントしている(実行環境のディレクトリに随時書き替えてください)

最後まで閲覧ありがとうございました

自分の勉強のアウトプット用なので、読みにくい点や分かりにくいところも多々あるとは思いますが、ご了承ください。
他に追記することや間違っていることなどあればコメントなどしていただけると幸いです。

2
1
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
2
1