Closed5
Permission denied @ rb_sysopen - /rails/config/initializers/devise.rb (Errno::EACCES)
$ docker-compose run --rm back bundle exec rails g devise:install
実行時に発生した。
ファイルシステムのパーミッションに関するエラーらしい。
Dockerコンテナ内でパーミッションを確認みる
$ docker exec -it buzzbase-back-1 /bin/bash
$ ls -l [ファイルパス]
RUN useradd rails --create-home --shell /bin/bash && \
- chown -R rails:rails db log storage tmp
+ chown -R rails:rails db log storage tmp && \
+ chown -R rails:rails /rails/config/initializers/ && \
+ chown -R rails:rails /rails/config/locales/
USER rails:rails
これで成功した。
chown -R rails:rails /rails/config/initializers/ && \
これを追加することで、railsユーザーが/rails/config/initializers
ディレクトリ内での編集権限を持つことができるようになります。
chown -R rails:rails /rails/config/locales/
こちらは、/rails/config/locales/devise.en.yml
ファイルを作成する時に、パーミッションエラーが発生してしまったため、railsユーザーに/rails/config/locales/
ディレクトリ内への編集権限を持たせています。
railsユーザーとは、、、
/back/Dockerfile
内の、USER rails:rails
で指定されている。
しかし、dockerで作成されたファイルが、ローカルプロジェクトに反映されていない。
docker-compose.ymlのbackのvolumesの設定とback/Dockerfile
の
docker-compose.yml
volumes:
- ./back:/app
back/Dockerfile
# Rails app lives here
- WORKDIR /rails
+ WORKDIR /app
# Copy built artifacts: gems, application
COPY --from=build /usr/local/bundle /usr/local/bundle
- COPY --from=build /rails /rails
+ COPY --from=build /app /app
# Run and own only the runtime files as a non-root user for security
RUN useradd rails --create-home --shell /bin/bash && \
chown -R rails:rails db log storage tmp && \
- chown -R rails:rails /rails/config/initializers/ && \
- chown -R rails:rails /rails/config/locales/
+ chown -R rails:rails /app/config/initializers/ && \
+ chown -R rails:rails /app/config/locales/
USER rails:rails
+ ENV GEM_HOME=/usr/local/bundle
+ ENV PATH $GEM_HOME/bin:$PATH
# Entrypoint sets up the container.
- ENTRYPOINT ["/rails/bin/docker-entrypoint"]
+ ENTRYPOINT ["/app/bin/docker-entrypoint"]
$ docker-compose down
$ docker-compose build
$ docker-compose up
$ docker-compose run back bundle install
複数のRubyのgemでビルドエラー発生。
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
An error occurred while installing racc (1.7.3), and Bundler cannot continue.
An error occurred while installing nio4r (2.6.1), and Bundler cannot continue.
An error occurred while installing websocket-driver (0.7.6), and Bundler cannot continue.
An error occurred while installing date (3.3.4), and Bundler cannot continue.
An error occurred while installing bcrypt (3.1.20), and Bundler cannot continue.
An error occurred while installing msgpack (1.7.2), and Bundler cannot continue.
An error occurred while installing pg (1.5.4), and Bundler cannot continue.
RUN apt-get update -qq && \
apt-get install --no-install-recommends -y \
build-essential libpq-dev \
+ build-essential \
+ libpq-dev \
+ make
docker-compose run --rm back bundle install
でエラー発生。
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
$ brew install gcc
$ brew install postgresql
Dockerfile
のbaseステージに以下を追加する。
FROM ruby:$RUBY_VERSION-slim as base
RUN apt-get update -qq && \
apt-get install --no-install-recommends -y build-essential libpq-dev make && \
rm -rf /var/lib/apt/lists/*
$ docker-compose build --no-cache
$ docker-compose run --rm back bundle install
このスクラップは2023/12/05にクローズされました