前提・実現したいこと
#docker-compose upを通したい
初投稿のため、至らない点があるかもしれないですが多めに見てもらえると幸いです。
独学でReactとRailsを学習し、ポートフォリオ制作している最中でございます。
ポートフォリオ制作で初めてDockerを使い詳細設定をした上でdocker-compose upをし、以下のエラーメッセージが発生しました。
コメントが多くて邪魔かもしれないですがよろしくお願いします。
発生している問題・エラーメッセージ
public_suffix-4.0.6が見つからない
bundle installができないと言われたので下記に書いてある4点試しました。
web_1 | Could not find public_suffix-4.0.6 in any of the sources web_1 | Run `bundle install` to install missing gems. prolist_web_1 exited with code 7
該当のソースコード
今回、私が関連すると思っている箇所を抜粋して掲載しました。
Dockerfile
# docker-compose buildすると以下が実行される FROM ruby:2.6.3 # 使用するイメージとバージョンを指定 RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs # RUN bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib" # Reactはどうするのか?? RUN mkdir /ProList WORKDIR /ProList # 作業ディレクトリ(ProList)作成と指定 COPY Gemfile /ProList/Gemfile COPY Gemfile.lock /ProList/Gemfile.lock # ホスト側のgemfileとgemfile.lockを仮想環境(ProList)にコピーする RUN bundle install # 上記のgemfileをbundle installさせる COPY . /ProList # ホスト側のディレクトリやファイルを仮想環境のProListに全てコピーする # (なぜ、gemfileとgemfile.lockのみ先にコピーするのかは疑問点である)
docker-compose.yml
version: "3" services: db: image: mysql:5.7 environment: MYSQL_USER: root MYSQL_ROOT_PASSWORD: password ports: - "3306:3306" volumes: - ./db/mysql/volumes:/var/lib/mysql # ホスト側:仮想環境側 にマウントする # (こうすることでホスト側のDBを削除しない限り、コンテナの削除をしても仮想環境のDBが消えることはない) web: build: . command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'" # rm -f tmp/pids/server.pidはサーバー起動時に作成されるらしい(これがあるとサーバー起動中と判断されるため削除する) volumes: - .:/ProList - gem_data:/usr/local/bundle ports: - 3000:3000 depends_on: - db # 起動順の制御(db => web) tty: true stdin_open: true volumes: gem_data:
Gemfile
source 'https://rubygems.org' git_source(:github) { |repo| "https://github.com/#{repo}.git" } ruby '2.6.3' # Bundle edge Rails instead: gem 'rails', github: 'rails/rails' gem 'rails', '6.0.0' # Use mysql as the database for Active Record gem 'mysql2', '0.5.3' # mimemagicを追加 gem "mimemagic", "~> 0.3.10" # Use Puma as the app server gem 'puma', '~> 3.11' # Use SCSS for stylesheets gem 'sass-rails', '~> 5' # Transpile app-like JavaScript. Read more: https://github.com/rails/webpacker gem 'webpacker', '~> 4.0' # 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.7' # Use Redis adapter to run Action Cable in production # gem 'redis', '~> 4.0' # Use Active Model has_secure_password # gem 'bcrypt', '~> 3.1.7' # Use Active Storage variant # gem 'image_processing', '~> 1.2' # Reduces boot times through caching; required in config/boot.rb gem 'bootsnap', '>= 1.4.2', 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 web drivers to run system tests with browsers gem 'webdrivers' end # Windows does not include zoneinfo files, so bundle the tzinfo-data gem gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
Gemfile.lock
(省略) mimemagic (0.3.10) nokogiri (~> 1) rake mini_mime (1.1.0) mini_portile2 (2.5.0) minitest (5.14.4) msgpack (1.4.2) mysql2 (0.5.3) nio4r (2.5.7) nokogiri (1.11.3) mini_portile2 (~> 2.5.0) racc (~> 1.4) public_suffix (4.0.6) puma (3.12.6) racc (1.5.2) rack (2.2.3) rack-proxy (0.6.5) rack (省略)
gem listを実行時のログ(ローカル)
nokogiri (1.11.3 x86_64-darwin, 1.11.1 x86_64-darwin, 1.10.1) openssl (default: 2.1.2) ostruct (default: 0.1.0) power_assert (1.1.3) prime (default: 0.1.0) psych (default: 3.1.0) public_suffix (4.0.6) puma (3.12.6) racc (1.5.2) rack (2.2.3) rack-proxy (0.6.5) rack-test (1.1.0) rails (6.0.3.6, 6.0.0, 5.2.4.5, 5.2.4.1)
docker-compose build --no-cacheを実行した際のログ
db uses an image, skipping Building web [+] Building 48.0s (13/13) FINISHED => [internal] load build definition from Dockerfile 0.0s => => transferring dockerfile: 37B 0.0s => [internal] load .dockerignore 0.0s => => transferring context: 2B 0.0s => [internal] load metadata for docker.io/library/ruby:2.6.3 0.0s => [internal] load build context 3.4s => => transferring context: 130.10MB 3.4s => CACHED [1/8] FROM docker.io/library/ruby:2.6.3 0.0s => [2/8] RUN apt-get update -qq && apt-get install -y build-essential li 8.1s => [3/8] RUN mkdir /ProList 0.4s => [4/8] WORKDIR /ProList 0.0s => [5/8] COPY Gemfile /ProList/Gemfile 0.0s => [6/8] COPY Gemfile.lock /ProList/Gemfile.lock 0.0s => [7/8] RUN bundle install 37.9s => [8/8] COPY . /ProList 0.3s => exporting to image 1.1s => => exporting layers 1.1s => => writing image sha256:ddeedc045664adc7ad09f878b07b7838f0cc9d6e3dbdb 0.0s => => naming to docker.io/library/prolist_web 0.0s Use 'docker scan' to run Snyk tests against images to find vulnerabilities and learn how to fix them Successfully built ddeedc045664adc7ad09f878b07b7838f0cc9d6e3dbdba76e15bd0d7ce746669 Use 'docker scan' to run Snyk tests against images to find vulnerabilities and learn how to fix them
docker-compose upのログ
(省略) db_1 | Version: '5.7.33' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server (GPL) web_1 | Could not find public_suffix-4.0.6 in any of the sources web_1 | Run `bundle install` to install missing gems. prolist_web_1 exited with code 7
試したこと
❶最初はdocker-compose buildをしていたのですがキャッシュの影響でうまくbundle installができないことがあるとのことだったのでdocker-compose build --no-cacheを実行
❷gem listでローカルでpublic_suffix-4.0.6があるのか確認
❸Gemfile.lockにpublic_suffix-4.0.6があるのか確認
❹Dockerfileの中のbundle installをbundle updateに変えてdocker-compose build --no-cacheとdocker-compose upを実行
上記4点を試し、解決せず、詰まってしまいました。
補足情報(FW/ツールのバージョンなど)
macOS
rails '6.0.0'
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/04/18 23:39
2021/04/19 10:34