C# Docker容器mcr.microsoft.com/dotnet/sdk不以root用户身份发布

C# Docker容器mcr.microsoft.com/dotnet/sdk不以root用户身份发布,c#,.net,docker,.net-core,C#,.net,Docker,.net Core,我使用docker容器构建C#application 问题是输出文件和目录(/bin和/obj)的权限是“root” 我希望文件的输出不是以root用户的身份(我知道chown命令,但我不希望以root用户的身份获取文件) 例如: docker-run-rm-v/home/user/d:/app-w/app mcr.microsoft.com/dotnet/sdk:3.1 dotnet-publish使用默认的dotnet/sdk这是不可能的。但您可以构建自己的容器映像,并将其用于构建应用程序:

我使用docker容器构建C#application

问题是输出文件和目录(/bin和/obj)的权限是“root”

我希望文件的输出不是以root用户的身份(我知道chown命令,但我不希望以root用户的身份获取文件)

例如:
docker-run-rm-v/home/user/d:/app-w/app mcr.microsoft.com/dotnet/sdk:3.1 dotnet-publish使用默认的
dotnet/sdk
这是不可能的。但您可以构建自己的容器映像,并将其用于构建应用程序:

FROM mcr.microsoft.com/dotnet/sdk:3.1

ARG UID=1000
ARG GID=1000

RUN groupadd -g $GID user
RUN useradd -g $GID -u $UID -m -s /bin/bash user
USER user
WORKDIR /app
docker run --rm -v /home/user/d:/app buildcontainer dotnet publish
使用
uid
gid
构建它,如下所示:

docker build <path to dir with Dockerfile> --build-arg UID=$(id -u) --build-arg GID=$(id -g) -t buildcontainer
因为容器和容器外部环境之间的uid和gid匹配,所以输出文件将具有您期望的所有权