#はじめに
Dockerの環境構築中に発生したエラーの解決した方法を記録します。
ただ、エラーは発生までの経緯で解決方法が違ってくるので、参考程度にしてください。
【エラー文】
Could not find gem 'mysql2 (~> 0.5)' in any of the gem sources listed in your Gemfile
#環境
Docker version 20.10.0
docker-compose version 1.27.4
#####Docker内の環境
ruby:2.6.5
Rails:6.0.0
データベース:mysql
###Dockerfile
FROM ruby:2.6.5
RUN apt-get update && apt-get install -y \
build-essential \
libpq-dev \
nodejs\
vim
WORKDIR /[作成したディレクトリ名]
COPY Gemfile Gemfile.lock /[作成したディレクトリ名]/
RUN bundle install
###docker-compose.yml
version: '3'
services:
web:
build: .
ports:
- 3000:3000
volumes:
- '.:/[作成したディレクトリ名]'
tty: true
stdin_open: true
#結論
結論は以下の2点を事項することで解決に至りました。
・bundle installしてmysqlをインストール
・webpackerをインストール
#経緯と対応
dockerc-composeでコンテナを作成後Railsのセットアップを行いサーバーを起動した時に発生しました。
エラー内容はmysql2が見つからない
という内容でした。
###対応1
Dockerfileにmysqlの記述がないから当然??と思いましたが、Gemfileにはmysqlが記述されてるのでとりあえずコンテナ内でbundle install
をしてインストールしてみることにしてみました。
かなり時間が経ってgemfileにインストールされました。
###対応2
再びrails s -b 0.0.0.0
をして起動しようと試みましたが今度はPlease run rails webpacker:install Error docker
というエラーが出ました。
これも、Dockerfileに書いてないので当然??と思いながら調べてるとwebpacker
を使う為にはyarn
が必要で、yarnをインストールする為には下記の記述も必要との事でDockerfileを編集してイメージ作成からやり直しました。
最後コンテナ内でwebpackerをインストールするとうまくいきました。
###対応2の手順
Dockerfileにyarnを追記します。
FROM ruby:2.6.5
RUN apt-get update && apt-get install -y \
build-essential \
libpq-dev \
nodejs\
yarn \ ←ここ
vim
WORKDIR /exam
COPY Gemfile Gemfile.lock /exam/
RUN bundle install
rails webpacker:install
のコマンドを入力してwebpackerをインストールします。
root@c21d03f52523:/exam# rails webpacker:install
.
.
.
省略
Webpacker successfully installed 🎉 🍰
root@c21d03f52523:/exam#
サーバーを起動します。
root@c21d03f52523:/exam# rails s -b 0.0.0.0
=> Booting Puma
=> Rails 6.1.2.1 application starting in development
=> Run `bin/rails server --help` for more startup options
Puma starting in single mode...
* Puma version: 5.2.1 (ruby 2.6.5-p114) ("Fettisdagsbulle")
* Min threads: 5
* Max threads: 5
* Environment: development
* PID: 156
* Listening on http://0.0.0.0:3000
Use Ctrl-C to stop
かなり時間がかかりましたが、インストール後rails s -b 0.0.0.0
で見事サーバーが立ち上がりました!
この記事では上記のエラー解決のみの内容ですがこの後データベースを作ってDocker内での開発環境を整えて行きます。
もしこの先にもご興味あれば下記の記事を参考にしてみてください。
【Docker】Ruby2.6.5とRails6.0.0とmysql DockerComposeで環境構築
https://qiita.com/AKI3/items/3b9656f6dc3759817aa5
#最後に
Dockerについて完全に理解できておらず、今回の対応も対処療法ですのでこれからも継続学習が必要です。
万が一情報が間違っている場合ご指摘していただけると幸いです。
#参考