解決したいこと
dockerのpermission deniedエラーを解決したいです。
プログラミング入門者です。ポートフォリオにdockerを使ってみようと思ったので2日ほど前からyoutubeの動画を参考にさせて頂き、学習しています。ですが、途中で
failed to solve: rpc error: code = Unknown desc = error from sender: open /home/senseiy/Documents/rails_docker/src/db/mysql_data/#innodb_temp: permission denied
のようなエラーが出てしまい、ここで詰まってしまいました。
環境 windows11のwsl2を使用しています。wsl2ではubuntu20.04を使用しています。
発生している問題・エラー
senseiy@senseIY:~/Documents/rails_docker$ docker-compose run web rails new . --force --database=mysql [+] Running 13/13 ⠿ db Pulled 66.9s ⠿ 15115158dd02 Pull complete 7.3s ⠿ d733f6778b18 Pull complete 7.4s ⠿ 1cc7a6c74a04 Pull complete 7.8s ⠿ c4364028a805 Pull complete 8.0s ⠿ 82887163f0f6 Pull complete 8.1s ⠿ 097bfae26e7a Pull complete 9.8s ⠿ e1b044d6a24f Pull complete 9.9s ⠿ cd2978bd4d12 Pull complete 10.0s ⠿ 28bce5cc1677 Pull complete 19.8s ⠿ 907b6d695760 Pull complete 19.8s ⠿ c5049403458b Pull complete 19.9s ⠿ f360718d6f4e Pull complete 20.0s [+] Running 2/2 ⠿ Network rails_docker_default Created 0.8s ⠿ Container rails_docker-db-1 Created 0.5s [+] Running 1/1 ⠿ Container rails_docker-db-1 Started 1.6s [+] Building 73.8s (6/9) => [internal] load build definition from Dockerfile 0.0s => => transferring dockerfile: 396B 0.0s => [internal] load .dockerignore 0.0s => => transferring context: 2B 0.0s => [internal] load metadata for docker.io/library/ruby:2.7 73.2s => CACHED [1/5] FROM docker.io/library/ruby:2.7@sha256:490f9343c654ce108a1bd34b4896e531135ffd47b9a25081948770ab9 0.0s => ERROR [internal] load build context 0.0s => => transferring context: 324B 0.0s => CANCELED [2/5] RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && echo "deb https:/ 0.5s ------ > [internal] load build context: ------ failed to solve: rpc error: code = Unknown desc = error from sender: open /home/senseiy/Documents/rails_docker/src/db/mysql_data/#innodb_temp: permission denied
使用したファイル
Dockerfile
#Dockerfile FROM ruby:2.7 RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \ && echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list \ && apt-get update -qq \ && apt-get install -y nodejs yarn WORKDIR /app COPY ./src /app RUN bundle config --local set path 'vendor/bundle' \ && bundle install
Gemfile
source 'https://rubygems.org' gem 'rails', '~> 6.1.0'
docker-compose.yml
version: '3' services: db: image: mysql:8.0 command: --default-authentication-plugin=mysql_native_password volumes: - ./src/db/mysql_data:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: password web: build: . command: bundle exec rails s -p 3000 -b '0.0.0.0' volumes: - ./src:/app ports: - "3000:3000" depends_on: - db
試したことと考察など
・スペルミスをチェックしたが問題はなさそうだった。
・https://teratail.com/questions/356474
この方の記事を参考にDockerfileを ./build/web/Dockerfile に移動し、docker-compose.yml内のweb:を
web: build: ./build/web
へ変更して更にDockerfileのCOPY部分を削除してから実行すると
senseiy@senseIY:~/Documents/rails_docker$ docker-compose run web rails new . --force --database=mysql [+] Running 1/0 ⠿ Container rails_docker-db-1 Running 0.0s [+] Building 43.3s (7/7) FINISHED => [internal] load build definition from Dockerfile 0.0s => => transferring dockerfile: 399B 0.0s => [internal] load .dockerignore 0.0s => => transferring context: 2B 0.0s => [internal] load metadata for docker.io/library/ruby:2.7 41.3s => [1/4] FROM docker.io/library/ruby:2.7@sha256:490f9343c654ce108a1bd34b4896e531135 0.0s => CACHED [2/4] RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add 0.0s => CACHED [3/4] WORKDIR /app 0.0s => ERROR [4/4] RUN bundle config --local set path 'vendor/bundle' && bundle ins 1.9s ------ > [4/4] RUN bundle config --local set path 'vendor/bundle' && bundle install: #7 1.857 Could not locate Gemfile ------ failed to solve: rpc error: code = Unknown desc = executor failed running [/bin/sh -c bundle config --local set path 'vendor/bundle' && bundle install]: exit code: 10
のようなエラーが出てきてしまった。また、このエラーをググっても解決につながりそうな記事が見当たらなかった。Gemfileを見つけられないようだがどうすればいいかわからなくなったため、とりあえず別の方法を試すことにした。また、この方はERROR: Service 'web' failed to build : Build failedのエラーが出ていたが自分の場合はなぜか出ていない。恐らくだがファイルを見る限り私と同じ処理をしているはず。
・権限をつけてみることにしたので以下のコマンドを実行するも効果はなく、エラー文に変わりはなかった。
#もしかすると意味ないことしてしまっているかもしれません senseiy@senseIY:~/Documents/rails_docker$ pwd /home/senseiy/Documents/rails_docker senseiy@senseIY:~/Documents/rails_docker$ chmod 777 /home/senseiy/Documents/rails_docker
・プログラミング入門者のため認識が間違っている部分があると思います。何かしらアドバイスがあればよろしくお願いいたします。
追記
ローカルとコンテナ内でユーザー権限の不一致が起きている可能性があるとのご指摘を頂いたので調べていただきました。
https://tech-blog.rakus.co.jp/entry/20200826/docker
こちらの記事を参考に進めさせていただきました。
まず、1つめのマウントしたボリュームの権限を書き換えるについてですが。
senseiy@senseIY:~/Documents/rails_docker$ chmod 777 src senseiy@senseIY:~/Documents/rails_docker$ docker-compose run web rails new . --force --database=mysql [+] Running 1/0 ⠿ Container rails_docker-db-1 Running 0.0s [+] Building 41.4s (7/9) => [internal] load build definition from Dockerfile 0.0s => => transferring dockerfile: 397B 0.0s => [internal] load .dockerignore 0.0s => => transferring context: 2B 0.0s => [internal] load metadata for docker.io/library/ruby:2.7 41.3s => [1/5] FROM docker.io/library/ruby:2.7@sha256:490f9343c654ce108a1bd34b4896e531135 0.0s => ERROR [internal] load build context 0.0s => => transferring context: 324B 0.0s => CACHED [2/5] RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add 0.0s => CACHED [3/5] WORKDIR /app 0.0s ------ > [internal] load build context: ------ failed to solve: rpc error: code = Unknown desc = error from sender: open /home/senseiy/Documents/rails_docker/src/db/mysql_data/#innodb_temp: permission denied
のように特にエラーは変わりませんでした。
2つ目のもやろうとしたのですが、どうやらコンテナ内のidを調べる必要があるみたいです。私の場合初期設定でエラーが出ている(まだコンテナをつくっていないので、docker-compose exec コンテナ名 bashで中に入ってid確認できない。また、3つ目は途中でbuildする必要がある)ためどうすればいいかわからなくなり、また詰まってしまいました。何かしらアドバイスがあればよろしくお願いいたします。

回答1件
あなたの回答
tips
プレビュー