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

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

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

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

Ruby on Rails 6

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

解決済

rails db:create時にGLIBC_2.29もしくはnokogiriが不足?しているエラー

iyore888
iyore888

総合スコア40

docker-compose

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

Ruby on Rails 6

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

1回答

0グッド

0クリップ

3310閲覧

投稿2022/04/07 01:49

編集2022/04/07 01:56

環境

ホストOS:Big Sur(M1 mac)
コンテナ内OS Debian 10.5
Docker
rails 6.0.4.7
ruby 2.7.1

困っていること

表題の通りrails db:create時にGLIBC_2.29もしくはnokogiriが不足?しているエラーが発生しています。
エラーは以下の通りです。
調べたところM1搭載のmacではよくある事象らしくいくつか当てはまるような記事もありましたが、
その方法では解決に至っていません。

XXXXX xxx$ docker-compose run web rails db:create Creating network "portfolio_20220406_default" with the default driver Creating portfolio_20220406_db_1 ... done Creating portfolio_20220406_web_run ... done ERROR: It looks like you're trying to use Nokogiri as a precompiled native gem on a system with glibc < 2.17: /lib/aarch64-linux-gnu/libm.so.6: version `GLIBC_2.29' not found (required by /usr/local/bundle/gems/nokogiri-1.13.3-aarch64-linux/lib/nokogiri/2.7/nokogiri.so) - /usr/local/bundle/gems/nokogiri-1.13.3-aarch64-linux/lib/nokogiri/2.7/nokogiri.so If that's the case, then please install Nokogiri via the `ruby` platform gem: gem install nokogiri --platform=ruby or: bundle config set force_ruby_platform true Please visit https://nokogiri.org/tutorials/installing_nokogiri.html for more help. rails aborted! LoadError: /lib/aarch64-linux-gnu/libm.so.6: version `GLIBC_2.29' not found (required by /usr/local/bundle/gems/nokogiri-1.13.3-aarch64-linux/lib/nokogiri/2.7/nokogiri.so) - /usr/local/bundle/gems/nokogiri-1.13.3-aarch64-linux/lib/nokogiri/2.7/nokogiri.so /usr/local/bundle/gems/nokogiri-1.13.3-aarch64-linux/lib/nokogiri/extension.rb:7:in `require_relative' /usr/local/bundle/gems/nokogiri-1.13.3-aarch64-linux/lib/nokogiri/extension.rb:7:in `<main>' /usr/local/bundle/gems/nokogiri-1.13.3-aarch64-linux/lib/nokogiri.rb:10:in `require_relative ----省略---- /usr/local/bundle/gems/bootsnap-1.11.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require' /usr/local/bundle/gems/bootsnap-1.11.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require' bin/rails:9:in `<main>' (See full trace by running task with --trace) ERROR: 1

確認したこと

以下エラーメッセージにあったコマンドについてはDockerfileのbundle installの直前に組み込んでみました。
ビルドは通りbundle installまで問題なく完了しました。しかし再度db:createしても同じエラーが発生します。

RUN bundle config set force_ruby_platform true もしくは RUN gem install nokogiri --platform=ruby

GLIBCのバージョン確認

$ docker-compose run web ldd --version Creating portfolio_20220406_web_run ... done ldd (Debian GLIBC 2.28-10) 2.28 Copyright (C) 2018 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Written by Roland McGrath and Ulrich Drepper

nokogiriのバージョン確認

$ docker-compose run web gem list | grep noko Creating portfolio_20220406_web_run ... done nokogiri (1.13.3 aarch64-linux)

Docker関連ファイル

Dockerfile

1FROM ruby:2.7.1 2 3RUN apt-get update -qq && \ 4 apt-get install -y build-essential \ 5 libpq-dev \ 6 nodejs \ 7 && rm -rf /var/lib/apt/lists/* 8 9RUN mkdir /app 10ENV APP_ROOT /app 11WORKDIR $APP_ROOT 12 13ADD ./Gemfile $APP_ROOT/Gemfile 14ADD ./Gemfile.lock $APP_ROOT/Gemfile.lock 15 16RUN bundle install 17

docker

1version: '3' 2 3services: 4 web: 5 build: ./api 6 command: bundle exec rails s -p 3000 -b '0.0.0.0' 7 ports: 8 - '3000:3000' 9 depends_on: 10 - db 11 volumes: 12 - ./api:/app 13 - bundle:/usr/local/bundle 14 tty: true 15 stdin_open: true 16 db: 17 platform: linux/x86_64 # M1チップ対応のため追記 18 image: mysql:5.7 19 volumes: 20 - mysql_data:/var/lib/mysql/ 21 environment: 22 MYSQL_ROOT_PASSWORD: password 23 ports: 24 - '3306:3306' 25 front: 26 build: ./front 27 volumes: 28 - ./front:/app 29 ports: 30 - '8080:8080' 31 tty: true 32 stdin_open: true 33 command: npm run serve 34 35volumes: 36 mysql_data: 37 bundle: 38

※front部分のDockerfileを読み込むところまで行っていないのであえて記載しません。

Gemfile関連のファイル

GemfileGemfile

1source 'https://rubygems.org' 2git_source(:github) { |repo| "https://github.com/#{repo}.git" } 3 4ruby '2.7.1' 5 6# Bundle edge Rails instead: gem 'rails', github: 'rails/rails', branch: 'main' 7gem 'rails', '~> 6.0.4', '>= 6.0.4.7' 8# Use mysql as the database for Active Record 9gem 'mysql2', '>= 0.4.4' 10# Use Puma as the app server 11gem 'puma', '~> 4.1' 12# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder 13# gem 'jbuilder', '~> 2.7' 14# Use Redis adapter to run Action Cable in production 15# gem 'redis', '~> 4.0' 16# Use Active Model has_secure_password 17# gem 'bcrypt', '~> 3.1.7' 18 19# Use Active Storage variant 20# gem 'image_processing', '~> 1.2' 21 22# Reduces boot times through caching; required in config/boot.rb 23gem 'bootsnap', '>= 1.4.2', require: false 24 25# Use Rack CORS for handling Cross-Origin Resource Sharing (CORS), making cross-origin AJAX possible 26gem 'rack-cors' 27 28group :development, :test do 29 # Call 'byebug' anywhere in the code to stop execution and get a debugger console 30 gem 'byebug', platforms: [:mri, :mingw, :x64_mingw] 31end 32 33group :development do 34 gem 'listen', '~> 3.2' 35 # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring 36 gem 'spring' 37 gem 'spring-watcher-listen', '~> 2.0.0' 38end 39 40# Windows does not include zoneinfo files, so bundle the tzinfo-data gem 41gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby] 42

Gemfile.lock

1GEM 2 remote: https://rubygems.org/ 3 specs: 4 actioncable (6.0.4.7) 5 actionpack (= 6.0.4.7) 6 nio4r (~> 2.0) 7 websocket-driver (>= 0.6.1) 8 actionmailbox (6.0.4.7) 9 actionpack (= 6.0.4.7) 10 activejob (= 6.0.4.7) 11 activerecord (= 6.0.4.7) 12 activestorage (= 6.0.4.7) 13 activesupport (= 6.0.4.7) 14 mail (>= 2.7.1) 15 actionmailer (6.0.4.7) 16 actionpack (= 6.0.4.7) 17 actionview (= 6.0.4.7) 18 activejob (= 6.0.4.7) 19 mail (~> 2.5, >= 2.5.4) 20 rails-dom-testing (~> 2.0) 21 actionpack (6.0.4.7) 22 actionview (= 6.0.4.7) 23 activesupport (= 6.0.4.7) 24 rack (~> 2.0, >= 2.0.8) 25 rack-test (>= 0.6.3) 26 rails-dom-testing (~> 2.0) 27 rails-html-sanitizer (~> 1.0, >= 1.2.0) 28 actiontext (6.0.4.7) 29 actionpack (= 6.0.4.7) 30 activerecord (= 6.0.4.7) 31 activestorage (= 6.0.4.7) 32 activesupport (= 6.0.4.7) 33 nokogiri (>= 1.8.5) 34 actionview (6.0.4.7) 35 activesupport (= 6.0.4.7) 36 builder (~> 3.1) 37 erubi (~> 1.4) 38 rails-dom-testing (~> 2.0) 39 rails-html-sanitizer (~> 1.1, >= 1.2.0) 40 activejob (6.0.4.7) 41 activesupport (= 6.0.4.7) 42 globalid (>= 0.3.6) 43 activemodel (6.0.4.7) 44 activesupport (= 6.0.4.7) 45 activerecord (6.0.4.7) 46 activemodel (= 6.0.4.7) 47 activesupport (= 6.0.4.7) 48 activestorage (6.0.4.7) 49 actionpack (= 6.0.4.7) 50 activejob (= 6.0.4.7) 51 activerecord (= 6.0.4.7) 52 marcel (~> 1.0.0) 53 activesupport (6.0.4.7) 54 concurrent-ruby (~> 1.0, >= 1.0.2) 55 i18n (>= 0.7, < 2) 56 minitest (~> 5.1) 57 tzinfo (~> 1.1) 58 zeitwerk (~> 2.2, >= 2.2.2) 59 bootsnap (1.11.1) 60 msgpack (~> 1.2) 61 builder (3.2.4) 62 byebug (11.1.3) 63 concurrent-ruby (1.1.10) 64 crass (1.0.6) 65 erubi (1.10.0) 66 ffi (1.15.5) 67 globalid (1.0.0) 68 activesupport (>= 5.0) 69 i18n (1.10.0) 70 concurrent-ruby (~> 1.0) 71 listen (3.7.1) 72 rb-fsevent (~> 0.10, >= 0.10.3) 73 rb-inotify (~> 0.9, >= 0.9.10) 74 loofah (2.16.0) 75 crass (~> 1.0.2) 76 nokogiri (>= 1.5.9) 77 mail (2.7.1) 78 mini_mime (>= 0.1.1) 79 marcel (1.0.2) 80 method_source (1.0.0) 81 mini_mime (1.1.2) 82 mini_portile2 (2.8.0) 83 minitest (5.15.0) 84 msgpack (1.5.0) 85 mysql2 (0.5.3) 86 nio4r (2.5.8) 87 nokogiri (1.13.3) 88 mini_portile2 (~> 2.8.0) 89 racc (~> 1.4) 90 puma (4.3.12) 91 nio4r (~> 2.0) 92 racc (1.6.0) 93 rack (2.2.3) 94 rack-cors (1.1.1) 95 rack (>= 2.0.0) 96 rack-test (1.1.0) 97 rack (>= 1.0, < 3) 98 rails (6.0.4.7) 99 actioncable (= 6.0.4.7) 100 actionmailbox (= 6.0.4.7) 101 actionmailer (= 6.0.4.7) 102 actionpack (= 6.0.4.7) 103 actiontext (= 6.0.4.7) 104 actionview (= 6.0.4.7) 105 activejob (= 6.0.4.7) 106 activemodel (= 6.0.4.7) 107 activerecord (= 6.0.4.7) 108 activestorage (= 6.0.4.7) 109 activesupport (= 6.0.4.7) 110 bundler (>= 1.3.0) 111 railties (= 6.0.4.7) 112 sprockets-rails (>= 2.0.0) 113 rails-dom-testing (2.0.3) 114 activesupport (>= 4.2.0) 115 nokogiri (>= 1.6) 116 rails-html-sanitizer (1.4.2) 117 loofah (~> 2.3) 118 railties (6.0.4.7) 119 actionpack (= 6.0.4.7) 120 activesupport (= 6.0.4.7) 121 method_source 122 rake (>= 0.8.7) 123 thor (>= 0.20.3, < 2.0) 124 rake (13.0.6) 125 rb-fsevent (0.11.1) 126 rb-inotify (0.10.1) 127 ffi (~> 1.0) 128 spring (2.1.1) 129 spring-watcher-listen (2.0.1) 130 listen (>= 2.7, < 4.0) 131 spring (>= 1.2, < 3.0) 132 sprockets (4.0.3) 133 concurrent-ruby (~> 1.0) 134 rack (> 1, < 3) 135 sprockets-rails (3.4.2) 136 actionpack (>= 5.2) 137 activesupport (>= 5.2) 138 sprockets (>= 3.0.0) 139 thor (1.2.1) 140 thread_safe (0.3.6) 141 tzinfo (1.2.9) 142 thread_safe (~> 0.1) 143 websocket-driver (0.7.5) 144 websocket-extensions (>= 0.1.0) 145 websocket-extensions (0.1.5) 146 zeitwerk (2.5.4) 147 148PLATFORMS 149 ruby 150 151DEPENDENCIES 152 bootsnap (>= 1.4.2) 153 byebug 154 listen (~> 3.2) 155 mysql2 (>= 0.4.4) 156 puma (~> 4.1) 157 rack-cors 158 rails (~> 6.0.4, >= 6.0.4.7) 159 spring 160 spring-watcher-listen (~> 2.0.0) 161 tzinfo-data 162 163RUBY VERSION 164 ruby 2.7.1p83 165 166BUNDLED WITH 167 2.1.4 168

教えて頂きたいこと

自分としてはGLIBCについてエラーで不足しているのは2.29、実際に入っているのは2.28という点が怪しいかなとバージョンアップなどの対応を試しているところです。
上記のようにまだ模索中ではあるのですが、かなり時間がかかっており並行して他の解決策についてご教示いただけると幸いです。

すでに参考にしているリンク

https://abillyz.com/watanabe/studies/244
https://nokogiri.org/tutorials/installing_nokogiri.html#supported-platforms
https://teratail.com/questions/hu67fbfeiwvi8r

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

2022/04/07 01:52依頼された後にこの質問は修正されています

こちらの質問が他のユーザーから「やってほしいことだけを記載した丸投げの質問」という指摘を受けました。

回答1

0

自己解決

根本的な原因は分かっていないが、
Docker DesktopをアンインストールしてDocker Desktop for Apple siliconを再インストールした。
その後同じ手順を踏んで構築した際にも同じエラーがでたが、エラーメッセージの解決方法で事象を解消することができた。
恐らくはM1の前に使っていたMacから移行したバージョンのDocker DesktopがApple silicon対応していなかったことが原因だと思われる。

投稿2022/04/07 13:40

iyore888

総合スコア40

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

同じタグがついた質問を見る

docker-compose

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

Ruby on Rails 6

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