はじめに
エンジニア復職を目指しキャッチアップでRails7環境を作成したときに詰まったところをメモ。
起きたこと
参考記事を見ながら以下ファイルの生成&編集
docker-compose.yml, Dockerfile, Gemfile, Gemfile.lock, entrypoint.sh
そしてdocker-compose up --build
を実行!
・・したところ、下記エラーが起きた。
/usr/local/lib/ruby/3.2.0/open3.rb:223:in `detach': can't create Thread: Operation not permitted (ThreadError)
エラーファイルを追って見るとDockerfileのbundle install
で起きているらしい。
なんじゃいと思いエラーを調べてみたもののいまいち解決方法が分からなかったが、以下の記事を発見。
RabbitMQ & Docker: Failed to create thread: Operation not permitted (1) - Stack Overflow
I add the same issue with Docker 18.03 , solved with docker v20.10
自分のDocker見てみると、Docker version 19.03.13
。古っ!
今までは会社のPCを使っていたから、自分のPCの開発環境は3年前のもので止まっていた・・。
しかもDocker for Desktopからアップデートしようとしたところ最新の更新を取得できないというエラーが起きた。
とりあえず、まずはDockerを再インストールしてそこからもう一回様子を見てみる。
やったこと
brew update
今入っているDockerはDocker Desktopだったので、 今後の管理を兼ねてbrew installでDockerを入れられるようにまずbrew自体を更新
brew upgrade docker で失敗したので brew update しました。 #homebrew - Qiita
dockerアンインストール
MacでDockerを完全にアンインストールする3つの方法 - Dr.Buho
dockerインストール
brew install docker --cask
を実行。
以下記事とおなじエラーが起きたので一度brew remove docker
も実行した
Mac 向けDocker をHomebrewでインストールしようとしたらつまづいた話 #Docker - Qiita
再度docker-compose up --build
を実行
無事ビルド成功🎉
その後は参考記事の手順通りでRails画面まで到達。
感想
- 後から色々調べたらおなじようなエラーが起きている場合、Dockerfileのbundle installのバージョンを指定したらよかっただけなのかも・・?まあでもこれからまた色々やるにあたりアップデートするに越したことはないのでよかった。
Docker環境でCould not find 'bundler'のエラーが出た時の対処法 | book-reviews.blog
- このエラーを1個1個解決していく感じ、やっぱり楽しいなあと思った
参考
開発環境作成
【Docker】Rails 7+MySQLのDocker環境を構築する
DockerでRails7+Mysql8.0環境を構築してRspecを書くまで #Docker - Qiita
【初心者向け】Rails 7+MySQL 8.0の開発環境をDocker composeで作る方法 | Muscle Coding
Docker周り
HomebrewでDocker Desktopを再インストールするときに注意すること - とことんDevOps | 日本仮想化技術のDevOps技術情報メディア
MacにHomebrewでDockerをインストールする – インターステラ株式会社 技術ブログ