前提・実現したいこと
Docker + Rails6 + PostgreSQL 環境構築
上記の記事を参考にrails6の環境構築を行っています。
以下のようにrails newで生成されるファイルやフォルダがroot権限なのでエディタでコードを書くことができなくて困っています。
一つ一つ権限をユーザーに変えていくのはとても大変なので一般ユーザー(boko)でファイルを生成する方法を知りたいです。
皆さんはどのようにこれらに対応しているのか教えていただきたいです!!
発生している問題
bash
1$ ls -l 2total 76 3-rw-r--r-- 1 boko boko 896 Jan 17 01:20 Dockerfile 4-rw-r--r-- 1 boko boko 2178 Jan 17 01:23 Gemfile 5-rw-r--r-- 1 boko boko 0 Jan 17 01:06 Gemfile.lock 6-rw-r--r-- 1 root root 374 Jan 17 01:23 README.md 7-rw-r--r-- 1 root root 227 Jan 17 01:23 Rakefile 8drwxr-xr-x 11 root root 4096 Jan 17 01:23 app 9drwxr-xr-x 2 root root 4096 Jan 17 01:23 bin 10drwxr-xr-x 5 root root 4096 Jan 17 01:23 config 11-rw-r--r-- 1 root root 160 Jan 17 01:23 config.ru 12drwxr-xr-x 2 root root 4096 Jan 17 01:23 db 13-rw-r--r-- 1 boko boko 358 Jan 17 01:07 docker-compose.yml 14-rw-r--r-- 1 boko boko 203 Jan 17 01:07 entrypoint.sh 15drwxr-xr-x 4 root root 4096 Jan 17 01:23 lib 16drwxr-xr-x 2 root root 4096 Jan 17 01:23 log 17-rw-r--r-- 1 root root 219 Jan 17 01:23 package.json 18drwxr-xr-x 2 root root 4096 Jan 17 01:23 public 19drwxr-xr-x 2 root root 4096 Jan 17 01:23 storage 20drwxr-xr-x 10 root root 4096 Jan 17 01:23 test 21drwxr-xr-x 6 root root 4096 Jan 17 01:23 tmp 22drwxr-xr-x 2 root root 4096 Jan 17 01:23 vendor
該当のソースコード
以下が該当するであろう、ターミナルでのコマンド、Dockerfile、docker-compose.ymlです。
bash
1$ docker-compose run web rails new . --force --no-deps --database=postgresql --skip-bundle
dockerfile
1FROM ruby:2.6.5 2 3# 必要なライブラリインストール 4RUN apt-get update -qq && apt-get install -y nodejs postgresql-client 5 6# yarnパッケージ管理ツールをインストール 7RUN apt-get update && apt-get install -y curl apt-transport-https wget && \ 8 curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \ 9 echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \ 10 apt-get update && apt-get install -y yarn 11 12# Node.jsをインストール 13RUN curl -sL https://deb.nodesource.com/setup_7.x | bash - && \ 14 apt-get install nodejs 15 16RUN mkdir /hey_app 17WORKDIR /hey_app 18COPY Gemfile /hey_app/Gemfile 19COPY Gemfile.lock /hey_app/Gemfile.lock 20RUN bundle install 21COPY . /hey_app 22 23COPY entrypoint.sh /usr/bin/ 24RUN chmod +x /usr/bin/entrypoint.sh 25ENTRYPOINT ["entrypoint.sh"] 26EXPOSE 3000 27 28CMD ["rails", "server", "-b", "0.0.0.0"]
yml
1version: '3' 2services: 3 db: 4 image: postgres 5 volumes: 6 - ./tmp/db:/var/lib/postgresql/data 7 environment: 8 - POSTGRES_PASSWORD=password 9 web: 10 build: . 11 command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'" 12 volumes: 13 - .:/hey_app 14 ports: 15 - "3000:3000" 16 depends_on: 17 - db
調べたこと
調べた所この問題はMacでは起こらなくLinux環境で起こるそうです。
補足情報(FW/ツールのバージョンなど)
ubuntu20.04(wsl2)
Docker version 20.10.2, build 2291f61
docker-compose version 1.27.4, build 40524192

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。