

### 解決したいこと

dockerのpermission deniedエラーを解決したいです。  
プログラミング入門者です。ポートフォリオにdockerを使ってみようと思ったので2日ほど前からyoutubeの動画を参考にさせて頂き、学習しています。ですが、途中で

[code]

    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
    
[/code]

のようなエラーが出てしまい、ここで詰まってしまいました。  
環境 windows11のwsl2を使用しています。wsl2ではubuntu20.04を使用しています。

### 発生している問題・エラー

[code]

    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
    
[/code]

### 使用したファイル

### Dockerfile

[code]

    #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
    
    
[/code]

### Gemfile

[code]

    source 'https://rubygems.org'
    
    gem 'rails', '~> 6.1.0'
    
[/code]

### docker-compose.yml

[code]

    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
    
    
[/code]

### 試したことと考察など

・スペルミスをチェックしたが問題はなさそうだった。  
・https://teratail.com/questions/356474  
この方の記事を参考にDockerfileを ./build/web/Dockerfile に移動し、docker-compose.yml内のweb:を

[code]

      web:
        build: ./build/web
    
[/code]

へ変更して更にDockerfileのCOPY部分を削除してから実行すると

[code]

    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
    
[/code]

のようなエラーが出てきてしまった。また、このエラーをググっても解決につながりそうな記事が見当たらなかった。Gemfileを見つけられないようだがどうすればいいかわからなくなったため、とりあえず別の方法を試すことにした。また、この方はERROR:
Service 'web' failed to build : Build
failedのエラーが出ていたが自分の場合はなぜか出ていない。恐らくだがファイルを見る限り私と同じ処理をしているはず。  
・権限をつけてみることにしたので以下のコマンドを実行するも効果はなく、エラー文に変わりはなかった。

[code]

    #もしかすると意味ないことしてしまっているかもしれません
    senseiy@senseIY:~/Documents/rails_docker$ pwd
    /home/senseiy/Documents/rails_docker
    senseiy@senseIY:~/Documents/rails_docker$ chmod 777 /home/senseiy/Documents/rails_docker
    
[/code]

・プログラミング入門者のため認識が間違っている部分があると思います。何かしらアドバイスがあればよろしくお願いいたします。

追記  
ローカルとコンテナ内でユーザー権限の不一致が起きている可能性があるとのご指摘を頂いたので調べていただきました。  
<https://tech-blog.rakus.co.jp/entry/20200826/docker>  
こちらの記事を参考に進めさせていただきました。  
まず、１つめのマウントしたボリュームの権限を書き換えるについてですが。

[code]

    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
    
[/code]

のように特にエラーは変わりませんでした。  
2つ目のもやろうとしたのですが、どうやらコンテナ内のidを調べる必要があるみたいです。私の場合初期設定でエラーが出ている（まだコンテナをつくっていないので、docker-
compose exec コンテナ名
bashで中に入ってid確認できない。また、3つ目は途中でbuildする必要がある）ためどうすればいいかわからなくなり、また詰まってしまいました。何かしらアドバイスがあればよろしくお願いいたします。


CC BY-SA 4.0
2022-03-06T06:35:30.763
86714
2022-07-14T03:04:45.470
2022-03-06T09:10:01.903
51193
51193
question
windows docker wsl-2
dockerのpermission deniedエラーを解決したい


chmod -R 777 src  
上記のコマンドを実行（私の場合はなぜか-Rなし＋すべてのファイル作りなおしで動きました）  
で解決できました。私のようなエラーで詰まっている方の参考になれば幸いです。アドバイスをして頂きありがとうございました。


CC BY-SA 4.0
2022-03-06T10:02:06.663
86717
2022-03-06T10:02:06.663
51193
86714
answer


`chmod -R 777 src` でうまくいかない場合は、頭に `sudo` を付けて管理者として実行してください。

[code]

    $ sudo chmod -R 777 src
    
[/code]

私の場合はこれでうまくいきました。


CC BY-SA 4.0
2022-05-04T06:26:48.817
88646
2022-05-05T06:06:27.160
2022-05-05T06:06:27.160
3060
52479
86714
answer