docker - Docker - Permission denied @ rb_sysopen - 覆盖卷的映像安装路径 - 未反映更改
问题描述
尝试使用dockerfile
和运行我的容器时,尝试在 Ubuntu 上对此权限错误进行排序docker-compose.yml
Exiting
/usr/local/bundle/gems/rack-2.2.3/lib/rack/server.rb:433:in `initialize': Permission denied @ rb_sysopen - /home/api/limpar/current/tmp/pids/server.pid (Errno::EACCES)
Dockerfile
FROM ruby:2.7.1
ENV LANG C.UTF-8
ENV NODE_VERSION 12
ENV NODE_ENV production
ENV INSTALL_PATH /home/api/limpar/current
.
(...)
RUN mkdir -p $INSTALL_PATH
WORKDIR $INSTALL_PATH
COPY Gemfile Gemfile.lock ./
RUN gem install bundler
RUN bundle install
COPY . $INSTALL_PATH
RUN rm -rf tmp
RUN useradd -Ms /bin/bash api -u 1001
RUN chown -R api:api /home/api /usr/local/bundle
USER api
EXPOSE 3000
CMD rails server -p 3000 -b 0.0.0.0
码头工人-compose.yml
api:
container_name: limpar-api
image: limpar-api
build: .
command: bundle exec rails s -p 3000 -b '0.0.0.0'
env_file:
- .env
volumes:
- ./:/home/api/limpar/current
ports:
- "3000:3000"
depends_on:
- db
- redis
networks:
- limpar_network
docker build
运行没有失败。Dockerfile
instal_path 覆盖docker-compose
文件上的卷位置。通过更改我的 docker-compose.yml 文件上的卷名,
I am able to fix the permission errors.
但是,我的代码上的本地更改不再得到反映,这意味着我每次更改任何内容时都必须重新构建。
Dockerfile 上关于用户权限的任何缺失点?提前致谢
解决方案
添加
USER root
到 Docker 文件,RUN chown...
修复了权限问题,并允许我在 dockerfile 和 docker-compose 卷上保持相同的路径,解决本地代码更改未反映的问题。
推荐阅读
- php - Laravel:全局范围未加载关系
- c - 为什么我的 strchr 不循环?我希望它输出数字,无论它看到多少次“。” 或者 ' !' 或者 '?'
- ios - 登录 Snapchat 后,SnapKit 无法返回应用
- c - 为什么C模糊滤镜不模糊角落?
- java - Android Sensors 使用连续模式每 10 毫秒捕获一次 Sensor 数据
- angular - 如何检查第一个数组中的值是否存在于第二个数组中?
- python - 如何在 PyAthena 中处理错误并重试?
- flutter - 如何在 Flutter 中创建自定义后退导航
- imagemagick - 如果需要,如何使用 imagemagick 调整图像大小以显示水平边距
- java - 修改 Skip32 以在 java 中仅生成混淆的正整数?