You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OpenShift部署Angular容器时Nginx的default.conf只读问题求助

解决方案

调整后的Dockerfile如下

FROM node:latest as build
WORKDIR /usr/local/app
COPY ./ /usr/local/app/
RUN npm install
RUN npm run build

FROM nginxinc/nginx-unprivileged
COPY --from=build /usr/local/app/dist/ng-adminx /usr/share/nginx/html
COPY --from=build /usr/local/app/nginx.conf /etc/nginx/conf.d/default.conf
# 新增权限适配配置,兼容OpenShift运行规则
RUN chgrp -R 0 /usr/share/nginx/html /etc/nginx/conf.d \
    && chmod -R g+rwX /usr/share/nginx/html /etc/nginx/conf.d
# 注意将暴露端口改为8080,非root用户无法绑定1024以下端口
EXPOSE 8080

配套修改要求

  • 你本地的nginx.conf配置文件中,监听端口需要同步改为8080,不要使用80端口。

问题根因说明

  • OpenShift默认强制使用随机非root UID运行容器,该UID默认归属GID 0的root用户组,本地运行容器时默认用root或固定UID用户,所以不会触发权限问题。
  • 官方nginxinc/nginx-unprivileged镜像默认的配置目录、静态资源目录仅对固定的nginx用户开放读写权限,OpenShift的随机UID没有对应权限,就会触发只读文件系统报错。

可选优化(针对运行时需要修改配置的场景)

如果业务逻辑需要在容器运行时动态修改default.conf,可以额外将/var/cache/nginx、/var/run目录也加入权限调整命令:

RUN chgrp -R 0 /usr/share/nginx/html /etc/nginx/conf.d /var/cache/nginx /var/run \
    && chmod -R g+rwX /usr/share/nginx/html /etc/nginx/conf.d /var/cache/nginx /var/run

内容的提问来源于stack exchange,提问作者Han

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 16:09:01