質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

2回答

5636閲覧

Dockerでホスト側のソースコードの変更がコンテナに即時反映されない。

Kiyobun510

総合スコア12

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2020/06/10 10:46

現在DockerでRailsの環境構築が完了し、個人アプリ開発を始めたのですがソースコードの変更がコンテナを再起動しないと即時反映されないです。

「本来ホスト側とコンテナは切り離されていて一度コンテナを立ち上げてしまうとホスト側の変更はコンナには反映されない。
対策として、docker-compose.ymlでホスト上のディレクトリをvolumeとしてコンテナにマウントすればホスト側の変更がコンテナ内に即時反映されるようになる。(docker-compose.ymlの下から5行目)」

という理解なのですが、volume の設定が間違っているのでしょうか?それともほかの場所が間違っているのでしょうか?
ググってもあまり情報がでてこず困っております。

環境

  • windows10 Pro
  • Ruby on Rails 6

以下原因があると思われるファイルのソースコードを記載させていただきます。

Dockerfile

FROM ruby:2.7 RUN apt-get update -qq && apt-get install -y nodejs yarnpkg RUN ln -s /usr/bin/yarnpkg /usr/bin/yarn RUN mkdir /app WORKDIR /app COPY Gemfile /app/Gemfile COPY Gemfile.lock /app/Gemfile.lock RUN bundle install COPY . /app # Add a script to be executed every time the container starts. COPY entrypoint.sh /usr/bin/ RUN chmod +x /usr/bin/entrypoint.sh ENTRYPOINT ["entrypoint.sh"] EXPOSE 3000 # Start the main process. CMD ["rails", "server", "-b", "0.0.0.0"]

docker₋compose.yml

version: "3" services: db: image: mysql:8.0 volumes: - ./tmp/db:/var/lib/mysql environment: - MYSQL_ALLOW_EMPTY_PASSWORD=1 web: build: . command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'" volumes: - .:/app //ここでマウントしていると解釈してます ports: - "3000:3000" depends_on: - db

entroypoint.sh

#!/bin/bash set -e # Remove a potentially pre-existing server.pid for Rails. rm -f /app/tmp/pids/server.pid # Then exec the container's main process (what's set as CMD in the Dockerfile). exec "$@"

##試したこと
開発環境用の設定ファイルである config/environments/development.rb を編集し、以下の記述を加え、docker₋compose restartやdocker-compose down buildなどしてみたが変わらない。

development.rb

Rails.application.configure do ~ config.reload_classes_only_on_change = false end

ご教授いただけると幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

unoSSkR

2020/06/14 04:36

Seems to exist no explanation how you know that the file synchronization between host and container-inside did not happened.
Kiyobun510

2020/06/15 12:38

This broblem was resolved .Thank you for answering.
guest

回答2

0

/config/environments/development.rb

config.file_watcher = ActiveSupport::EventedFileUpdateChecker

から

config.file_watcher = ActiveSupport::FileUpdateChecker

へ書き換えたらコンテナを再起動しなくてもソースコードの変更が即時反映されるようになりました!

投稿2020/06/15 12:48

Kiyobun510

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

自己解決

/config/environments/development.rb

config.file_watcher = ActiveSupport::EventedFileUpdateChecker

から

config.file_watcher = ActiveSupport::FileUpdateChecker

へ書き換えたらコンテナを再起動しなくてもソースコードの変更が即時反映されるようになりました!

投稿2020/06/15 12:43

Kiyobun510

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問