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

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

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

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

Ruby on Rails

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

Docker

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

Q&A

1回答

2717閲覧

Rails環境構築でThe engine "node" is incompatible with this module.

ranerane0101

総合スコア70

docker-compose

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

Ruby on Rails

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

Docker

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

0グッド

0クリップ

投稿2022/01/08 15:40

編集2022/01/09 09:23
error http-proxy-middleware@2.0.1: The engine "node" is incompatible with this module. Expected version ">=12.0.0". Got "10.24.0" error Found incompatible module.

エラーは上記でリンク内容ここのサイトが解決策で当てはまることは調べられたのですが、このサイトでの環境が恐らくDockerではなくどう自分の環境に即してこのサイトを解釈したらいいのか分かりません。

具体的には

そもそも、上記のエラーは```ここに言語を入力
docker-compose run web rails new . --force --no-deps --database=mysql

このコマンドでrailsのひな型を作成した時に生じたもので、まずコンテナが立ち上がらないのでアプリコンテナ(web)に入れません。 必要か分かりませんが ```ここに言語を入力 ```ここに言語を入力 Dockerfile FROM ruby:2.7.0 ## nodejsとyarnはwebpackをインストールする際に必要 # yarnパッケージ管理ツールをインストール RUN apt-get update && apt-get install -y curl apt-transport-https wget && \ curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \ echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \ apt-get update && apt-get install -y yarn RUN apt-get update -qq && apt-get install -y nodejs yarn RUN mkdir /myapp WORKDIR /myapp COPY Gemfile /myapp/Gemfile COPY Gemfile.lock /myapp/Gemfile.lock RUN bundle install COPY . /myapp RUN yarn install --check-files RUN bundle exec rails webpacker:compile # 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
環境はWindowsでWSL2なのでそもそもMacじゃないからとかですかね?そういった基本的なことも分かっておりません。Dockerは開発環境をチームのメンバーなどで揃えられるとのメリットがあると認識しているのですが。。。 どうかよろしくお願い致します。

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

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

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

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

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

guest

回答1

0

Docker内のnodeのバージョンが古くてエラーが出ています。

ruby 2.7.0 にはいくつか脆弱性がありますので、2.7 系最新の 2.7.5 を使うことをお勧めします。
https://www.ruby-lang.org/ja/news/2021/11/24/ruby-2-7-5-released/
FROM ruby:2.7.5 に変更することで node 12 がインストールされて docker-compse で動くようになると思います。

投稿2022/01/09 12:19

kmasuda050

総合スコア16

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

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

ranerane0101

2022/01/09 16:05

docker-compose buildを行ったら今度はこのようなエラーが出たのですが、これもDockerfileの修正でしょうか? 何度もすみません => ERROR [11/13] RUN bundle exec rails webpacker:compile 14.2s ------ > [11/13] RUN bundle exec rails webpacker:compile: #15 11.89 Compiling... #15 13.15 Compilation failed: #15 13.15 yarn run v1.22.17 #15 13.15 info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command. #15 13.15 #15 13.15 #15 13.15 error Command "webpack" not found.
kmasuda050

2022/01/10 10:58 編集

Dockerfileの内容から https://zenn.dev/tmasuyama1114/articles/rails-docker-6x-how-to のサイトを参考になされていると思います。 こちらで上記サイトの手順で FROM ruby:2.7.5 のみ変更して docker-compose build まで進めたのですがエラーは出ませんでした。 FROM ruby:2.7.0 のときに生成されたファイルが中途半端に残っていてうまく動いていないことが考えられますので、生成されたファイルを一度すべて削除してやり直してみると良いと思います。 こちらでうまくいったときの状態をgithubに用意しましたので もしうまくいかない場合はそちらでうまく動くか確認してみてください。 ``` $ git clone https://github.com/kmasuda050/teratail-377246 $ cd teratail-377246 $ docker-compose build ```
ranerane0101

2022/01/10 14:27

Unknown MySQL server host 'db' (-3) Couldn't create 'myapp_development' database. Please check your configuration. rails aborted! Mysql2::Error::ConnectionError: Unknown MySQL server host 'db' (-3) このエラーが出たのですが、Githubまで掲載ありがとうございます。 database.ymlのdevelopmentとtestのところのdb host passwordはわざと隠しましたか?参考サイトのままでしょうか?
ranerane0101

2022/01/10 14:28

docker-compose run web rails db:create このコマンド入力後のエラーです
ranerane0101

2022/01/10 15:24

TAG IMAGE ID CREATED SIZE rails-docker08_web IN USE latest 1c87c0f7e8c6 about 1 hour ago 1.53 GB <none> IN USE <none> 40e95cc7eb35 about 2 hours ago 996.38 MB ruby 2.7.5 c6d24c46376e 20 days ago 863.84 MB mysql IN USE 5.7 c20987f18b13 21 days ago 448.34 MB Dockerイメージを確認したらたくさん残っていたので削除しました。残りが上の記載のモノですが、MySQLのイメージが削除できないのが問題でしょうか?
kmasuda050

2022/01/10 15:58

docker-compose build までしか試していませんでした。 先程 docker-compose run web rails db:create を試したところ 初回は database が起動するまで時間がかかるので 記載されている Mysql2::Error::ConnectionError: Unknown MySQL server host 'db' (-3) と同じエラーがでました。 2 回目に実行したところ database が起動済みの状態なので エラーはでませんでした。 database が起動済みかは以下のコマンドで確認できます。 ``` $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 7e522deb9c34 mysql:5.7 "docker-entrypoint.s…" 10 seconds ago Up 9 seconds 0.0.0.0:3306->3306/tcp, 33060/tcp teratail-377246_db_1 ``` > database.ymlのdevelopmentとtestのところのdb host passwordはわざと隠しましたか?参考サイトのままでしょうか? 参考サイトのままです。
ranerane0101

2022/01/10 16:36

# MySQL. Versions 5.5.8 and up are supported. # # Install the MySQL driver # gem install mysql2 # # Ensure the MySQL gem is defined in your Gemfile # gem 'mysql2' # # And be sure to use new-style password hashing: # https://dev.mysql.com/doc/refman/5.7/en/password-hashing.html # default: &default adapter: mysql2 encoding: utf8mb4 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> username: root password: host: localhost development: <<: *default database: myapp_development host: db username: root password: password # Warning: The database defined as "test" will be erased and # re-generated from your development database when you run "rake". # Do not set this db to the same as development or production. test: <<: *default database: myapp_test host: db username: root password: password # As with config/credentials.yml, you never want to store sensitive information, # like your database password, in your source code. If your source code is # ever seen by anyone, they now have access to your database. # # Instead, provide the password as a unix environment variable when you boot # the app. Read https://guides.rubyonrails.org/configuring.html#configuring-a-database # for a full rundown on how to provide these environment variables in a # production deployment. # # On Heroku and other platform providers, you may have a full connection URL # available as an environment variable. For example: # # DATABASE_URL="mysql2://myuser:mypass@localhost/somedatabase" # # You can use this database configuration with: # # production: # url: <%= ENV['DATABASE_URL'] %> # production部分は省きましたが記事だとこのようになっているんですよね。Docker自体をreset to defaultで壊した方が良いですかね?すみません、環境構築実際にして頂いているのに。
kmasuda050

2022/01/10 16:50

github には docker-compose build の部分までしか適用していないです。 こちらですべて試したわけではありませんが、 docker-compose build 以降の手順は参考サイトのとおり進めてください。 database.yml は参考サイトの内容をそのまま適用していただいて大丈夫です。 database が起動済みであることを確認できましたら docker-compose run web rails db:create コマンドを実行してみてください。 > Docker自体をreset to defaultで壊した方が良いですかね? reset to default はしなくてよいです。
ranerane0101

2022/01/10 17:15

dbコンテナが起動していないようです。 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 5818e6ab47ba rails-docker08_web "entrypoint.sh bash …" 7 minutes ago Up 6 minutes 0.0.0.0:3000->3000/tcp, :::3000->3000/tcp rails-docker08_web_1 e48048a54556 mysql:5.7 "docker-entrypoint.s…" 7 minutes ago Exited (1) 7 minutes ago rails-docker08_db_1 748351f08646 rails-docker08_web "entrypoint.sh rails…" 17 minutes ago Exited (1) 11 minutes ago rails-docker08_web_run_5386edc66762 0f4c12181a5e a01695c25dd3 "entrypoint.sh rails…" 39 minutes ago Exited (1) 36 minutes ago rails-docker08_web_run_5f8228083457 2d738bc0c7ff a01695c25dd3 "entrypoint.sh rails…" 53 minutes ago Exited (1) 49 minutes ago rails-docker08_web_run_2408bdd2a09d 3a53e6594c38 a01695c25dd3 "entrypoint.sh rails…" About an hour ago Exited (1) 53 minutes ago rails-docker08_web_run_7cb2a9f276d6 消した方が良いコンテナ・イメージなどありますでしょうか。
kmasuda050

2022/01/10 17:18

$ docker-compose up db でデータベースだけ起動できますので、そのときのログを確認してみてください。 正しく起動できると、最後に以下のログが出力されます。 db_1 | Version: '5.7.36' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server (GPL)
ranerane0101

2022/01/10 17:36

起動できませんでした。 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option [ERROR] --initialize specified but the data directory has files in it. Aborting. まずはERRORの方を調べてみます。遅いですので無理はなさらずにおやすみください。ありがとうございます。
ranerane0101

2022/01/11 15:26

defaultにDockerリセットしたんですが無理なので改めて質問します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問