returnえんじにゃー

学び直し中元エンジニアのアウトプットブログ。技術やものづくり。たまに猫。

Rails7+Mysql8.0環境をDockerで構築したらOperation not permitted (ThreadError)

はじめに

エンジニア復職を目指しキャッチアップで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をインストールする – インターステラ株式会社 技術ブログ

【Mac M1】Dockerのインストール方法

エラー調査

ThreadError can't create Thread: Resource temporarily unavailable · Issue #4353 · rubygems/rubygems · GitHub