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

Cloud Run Job随机出现‘User not found in /etc/passwd’错误求助

Cloud Run Job 随机出现用户未找到错误的解决思路

我在执行Cloud Run Job时,使用同一容器镜像,却有不到5%的执行会随机出现如下错误:

Application failed to start: resolveUserIdentity("1001"): User not found in file /etc/passwd

我的Dockerfile内容如下:

FROM registry.access.redhat.com/ubi8/ubi-minimal:8.7

RUN microdnf install freetype fontconfig \
    && microdnf clean all
WORKDIR /work/
RUN chown 1001 /work \
    && chmod "g+rwX" /work \
    && chown 1001:root /work
COPY --chown=1001:root target/*.properties target/*.so /work/
COPY --chown=1001:root target/*-runner /work/application


EXPOSE 8080
USER 1001

CMD ["./application", "-Dquarkus.http.host=0.0.0.0"]

解决思路

  • 提前创建UID为1001的用户:当前UBI镜像默认可能没有该UID对应的用户条目,Cloud Run偶尔会出现用户映射异常。在Dockerfile中添加创建用户的命令:

    RUN useradd -u 1001 -g 0 -m appuser
    

    之后保持USER 1001即可,确保/etc/passwd中存在该用户的固定条目。

  • 启动时动态添加用户条目:针对Cloud Run运行时可能修改/etc/passwd的情况,用启动脚本补全用户信息:

    1. 创建start.sh脚本:
      #!/bin/sh
      echo "1001:x:1001:0:App User:/work:/sbin/nologin" >> /etc/passwd
      exec ./application -Dquarkus.http.host=0.0.0.0
      
    2. 修改Dockerfile,复制脚本并赋予执行权限:
      COPY --chown=1001:root start.sh /work/
      RUN chmod +x /work/start.sh
      CMD ["./start.sh"]
      

    每次启动都会强制确保用户条目存在。

  • 临时切换为root运行排查:如果业务允许,暂时将USER 1001改为USER root,验证错误是否消失。若问题不再出现,可确认是用户映射导致的问题,再针对性优化。(注意生产环境不建议长期用root运行)

  • 检查Cloud Run Job配置:确认Job是否设置了自定义服务账号或用户映射参数,部分配置可能会覆盖容器内的用户设置,排查是否存在身份配置冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 04:44:56