在RHEL-.NET Core上,对project.lock.json的访问被拒绝

我刚刚开始使用Red Hat提供的一些说明,在RHEL 7上使用.NET Core和Docker。

我使用dotnet new -t web创build了一个.NET核心MVC应用程序,然后在该文件夹中创build了我的Dockerfile ,其中包含以下内容:

 FROM registry.access.redhat.com/dotnet/dotnetcore-11-rhel7 ADD . /opt/app-root/src/ WORKDIR /opt/app-root/src/ EXPOSE 5000 RUN ["/bin/bash", "-c", "/opt/rh/rh-dotnetcore11/root/usr/bin/dotnet restore"] RUN ["/bin/bash", "-c", "/opt/rh/rh-dotnetcore11/root/usr/bin/dotnet build"] CMD ["/bin/bash", "-c", "/opt/rh/rh-dotnetcore11/root/usr/bin/dotnet run"] 

然后我尝试通过运行来构buildDocker镜像

 docker build -t mvc_docker 

其中mvc_docker既是我在运行docker build命令时所在文件夹的名称,也是我正在尝试创build的映像的名称。

dotnet restore过程中一切看起来不错,但是我在控制台中得到这个错误:

错误:访问path“/opt/app-root/src/project.lock.json”被拒绝。

目前在我的RHEL虚拟机/opt目录中没有app-root目录 – 是否需要手动创build一个,还是期望Docker在Dockerfile指定的目标目录path中创build任何目录?

更新:所以我手动创build/opt/app-root/srcpath,但仍然得到相同的错误,并且当我ls -lasrc文件夹中没有文件。

我的Dockerfile内容不正确? 我可以从我的项目文件夹中的bash提示运行dotnet restore ,它成功完成,但也说

锁文件没有改变。 跳过locking文件写入。

但是,这是在我的项目文件夹中的locking文件,而不是在/opt目标文件夹中的任何文件。

您参考的.NET Core图像是以我们的源图像工具为基础构build的,所以最好的select就是使用它。

你这样安装:

 sudo yum install source-to-image 

然后,input您的ASP.NET Core项目的根目录(包含project.json)并使用s2i命令构build一个s2i镜像。

 s2i build . registry.access.redhat.com/dotnet/dotnetcore-11-rhel7 myweb-dotnetcore-app 

并使用以下命令运行新创build的名为myweb-dotnetcore-app映像:

 docker run -p 8080:8080 myweb-dotnetcore-app 

您可能需要更改端口以适应您的需求。

我设法解决与project.lock.json有关的错误,在我运行我的docker build命令之前删除它。
这样做使dotnet restore成功完成。

可悲的是,我现在正在得到另一个错误,但这将是一个不同的问题。