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

在Heroku部署的Docker容器中能否创建使用自定义用户/用户组

Heroku 容器环境自定义用户/用户组配置说明

完全可以在符合Heroku安全规范的前提下创建并使用自定义用户和用户组,无需使用特权权限即可完成配置。你遇到的用户/组不存在的问题,通常是Dockerfile配置遗漏导致的。

正确配置步骤

  • 在Dockerfile的最终运行镜像阶段(多阶段构建不要仅在构建阶段执行)创建自定义用户和用户组,同时给应用所需的目录分配对应权限,参考配置如下:
# 替换为你实际使用的基础镜像
FROM node:18-alpine

# 创建自定义用户组和用户,alpine镜像、Debian/Ubuntu类镜像均支持addgroup/adduser命令
RUN addgroup -S customgroup && adduser -S customuser -G customgroup

# 创建应用目录并分配权限
RUN mkdir -p /app && chown -R customuser:customgroup /app

# 显式指定运行用户,该步骤不可省略
USER customuser

# 后续操作默认使用自定义用户权限,复制文件时建议显式指定所属用户避免权限问题
WORKDIR /app
COPY --chown=customuser:customgroup . .
CMD ["node", "index.js"]
  • 自定义用户的UID需大于等于1000,不要使用低于1000的系统级用户,符合Heroku的安全限制要求,使用adduser默认生成的用户UID符合该要求。
  • 进入容器控制台后默认登录的是Heroku自动生成的dyno用户,执行su <你的自定义用户名>即可切换到自定义用户,你创建的用户记录会保留在/etc/passwd中不会被清除。

常见配置遗漏说明

  • 未显式声明USER指令:Heroku会默认覆盖容器的运行用户为自动生成的dyno用户,不会自动使用你创建的自定义用户。
  • 多阶段构建配置错误:仅在构建阶段执行了adduser/addgroup操作,最终交付的运行镜像阶段没有执行用户创建逻辑,导致运行时找不到对应用户。
  • 未给自定义用户分配应用目录权限:会导致应用启动时出现读写权限报错,建议复制文件时添加--chown参数显式指定文件所属。

注:自定义普通用户完全符合Heroku官方“不使用特权用户/用户组”的规范要求,仅需避免给自定义用户分配sudo、root级权限即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 03:21:01