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

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

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

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

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

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

Docker

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

Q&A

解決済

1回答

916閲覧

Docker "docker-compose up" にエラーが出る

keisuke.F

総合スコア19

Ruby

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

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

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

Docker

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

0グッド

0クリップ

投稿2020/08/12 04:35

編集2020/08/12 04:40

お世話になっております。
環境構築をしている際に下記のエラーが発生しており、苦戦しております。

web_1 | /usr/local/bundle/gems/bootsnap-1.4.8/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `require': libmariadbclient.so.18: cannot open shared object file: No such file or directory - /usr/local/bundle/gems/mysql2-0.5.3/lib/mysql2/mysql2.so (LoadError)

ここで、読み込みが止まっています。

動画やサイトを見ながら、自分に合ったバージョンに書き換えて実行しているのですが、どうもうまくいきません。

VScode内でディレクトリを検索してみても見当たらず、どこを修正するべきかわかりません。

よろしくお願い致します。

mysql 5.6.47
ruby 2.5.8
rails 5.2.4

Dockerfile

FROM ruby:2.5 RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs RUN mkdir /myapp WORKDIR /myapp COPY Gemfile /myapp/Gemfile COPY Gemfile.lock /myapp/Gemfile.lock RUN bundle install COPY . /myapp

docker-compose.yml

version: '3' services: db: image: mysql:5.6 environment: MYSQL_USER: root MYSQL_ROOT_PASSWORD: password ports: - "3306:3306" volumes: - ./db/mysql/volumes:/var/lib/mysql web: build: . command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'" volumes: - .:/myapp - gem_data:/usr/local/bundle ports: - 3000:3000 depends_on: - db tty: true stdin_open: true volumes: gem_data:

database.yml

default: &default adapter: mysql2 encoding: utf8 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> username: root password: password host: db development: <<: *default database: myapp_development # 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

gemfile

source 'https://rubygems.org' git_source(:github) { |repo| "https://github.com/#{repo}.git" } ruby '2.5.8' # Bundle edge Rails instead: gem 'rails', github: 'rails/rails' gem 'rails', '~> 5.2.4', '>= 5.2.4.3' # Use mysql as the database for Active Record gem 'mysql2', '>= 0.4.4', '< 0.6.0' # Use Puma as the app server gem 'puma', '~> 3.11' # Use SCSS for stylesheets gem 'sass-rails', '~> 5.0' # Use Uglifier as compressor for JavaScript assets gem 'uglifier', '>= 1.3.0' # See https://github.com/rails/execjs#readme for more supported runtimes # gem 'mini_racer', platforms: :ruby # Use CoffeeScript for .coffee assets and views gem 'coffee-rails', '~> 4.2' # Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks gem 'turbolinks', '~> 5' # Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder gem 'jbuilder', '~> 2.5' # Use Redis adapter to run Action Cable in production # gem 'redis', '~> 4.0' # Use ActiveModel has_secure_password # gem 'bcrypt', '~> 3.1.7' # Use ActiveStorage variant # gem 'mini_magick', '~> 4.8' # Use Capistrano for deployment # gem 'capistrano-rails', group: :development # Reduces boot times through caching; required in config/boot.rb gem 'bootsnap', '>= 1.1.0', require: false group :development, :test do # Call 'byebug' anywhere in the code to stop execution and get a debugger console gem 'byebug', platforms: [:mri, :mingw, :x64_mingw] end group :development do # Access an interactive console on exception pages or by calling 'console' anywhere in the code. gem 'web-console', '>= 3.3.0' gem 'listen', '>= 3.0.5', '< 3.2' # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring gem 'spring' gem 'spring-watcher-listen', '~> 2.0.0' end group :test do # Adds support for Capybara system testing and selenium driver gem 'capybara', '>= 2.15' gem 'selenium-webdriver' # Easy installation and use of chromedriver to run system tests with Chrome gem 'chromedriver-helper' end # Windows does not include zoneinfo files, so bundle the tzinfo-data gem gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]

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

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

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

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

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

guest

回答1

0

ベストアンサー

追記

(keisuke.F さんの自己解決を受けて)

rubyのバージョンを指定し直したら解決しました

こちらで再ビルドしてみたところ、確かに同様のエラーが発生しました
ファイルも存在しているのにエラーとなっており、
依存している可能性のある apt パッケージのインストールでも改善しませんでした

mysql2 はテストを Ubuntu で行っているので、
Docker の公式イメージのベースになっている Debian だと
依存関係に旧バージョンを利用している場合にうまく動作しない可能性があるようです
mysql2/.travis.yml at 0.5.3 · brianmario/mysql2

元の回答

イメージの再ビルドを行いましたか?

参考: イメージの再ビルド | Docker 公式ドキュメントの Rails Quickstart 完全解説 - Qiita

おそらく参考にしている教材は Docker の Rails Quickstart を参考にしています
Quickstart: Compose and Rails | Docker Documentation

この手順に則る場合、最初に rails new を実行した後、
イメージの再ビルドが必要です

Docker イメージ内に mysql2 の gem をインストールするビルドを行ったか、
または、docker compose up 実行時に mysql2 の gem がインストールされるようなコマンドを実行しているかを確認します

参考:
Docker イメージ内に gem をインストールするビルドを行う場合 (例は PostgreSQLの場合):
イメージの再ビルド | Docker 公式ドキュメントの Rails Quickstart 完全解説 - Qiita
docker compose up 実行時に mysql2 の gem がインストールされるようなコマンドを実行する場合:
docker-compose-rails/dockerfile-rails at master · yukihiko-shinoda/docker-compose-rails

投稿2020/08/12 04:44

編集2020/08/12 06:09
y_shinoda

総合スコア3272

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

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

keisuke.F

2020/08/12 04:59 編集

docker-compose buildをしたあと、database.ymlの変更をするのを忘れているのに気付き、編集後、2度目のdocker-compose buildをし、docker-compose upを実行したら上記のエラーが出ました。 rails newも問題なく実行済みです。 docker-compose.yml内に mysql:5.6 の記述があるにもかかわらず、gemに 'mysql2', '>= 0.4.4', '< 0.6.0' が記述されているのに問題があるのでしょうか?
keisuke.F

2020/08/12 05:49

rubyのバージョンを指定し直したら解決しました。 データベースに関して別の問題が発生したので、そちらに取り掛かります。 今後ともよろしくお願い致します。
y_shinoda

2020/08/12 06:11

回答を修正しました、 こちらでも再現し、ruby のバージョンを変えずには 改善方法を見つることはできませんでした
keisuke.F

2020/08/12 06:18

再現していただきありがとうございます。 今後ともよろしくお願い致します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問