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

.NET 8 Docker入口脚本中root切换非root用户异常问题

问题原因与解决方案

核心问题

你的.NET 8 Dockerfile没有创建app:app这个非root用户,而.NET 7的Dockerfile里手动执行了用户创建命令。当入口脚本运行su-exec app:app dotnet server.dll时,因为目标用户不存在,su-exec会直接以当前的root用户继续运行后续命令,导致应用始终以root启动,exec进入容器后自然显示root。

修复步骤

在.NET 8的Dockerfile中添加创建app用户和用户组的命令,和.NET 7的配置保持一致:

修改后的.NET 8 Dockerfile:

FROM mcr.microsoft.com/dotnet/aspnet:8.0.0-alpine3.18-amd64 AS final

# 创建非root用户组和用户
RUN addgroup --gid 1000 -S app && adduser --uid 1000 -S app -G app

WORKDIR /app
RUN apk add --no-cache tini=0.19.0-r1 su-exec=0.2-r3

COPY entrypoint.sh /
RUN chmod 755 /entrypoint.sh

ENTRYPOINT ["/sbin/tini", "--", "/entrypoint.sh"]
COPY --from=publish /app .

验证方法

可以在Dockerfile中添加RUN id app命令,构建镜像时如果能正常输出用户信息,说明用户创建成功;如果报错,则说明用户未被正确创建。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 15:20:19