在RHEL - .NET Core上拒绝访问project.lock.json

时间:2017-07-31 12:45:25

标签: .net docker dockerfile rhel7

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

我使用undefined创建了一个.NET核心MVC应用,然后在该文件夹中创建了我的n-1,其中包含以下内容:

dotnet new -t web

然后我尝试通过运行

来构建Docker镜像
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"] 既是我运行docker build -t mvc_docker 命令时所在文件夹的名称,也是我正在尝试创建的图像的名称。

mvc_docker期间一切看起来都不错,但后来我在控制台中收到了这个错误:

  

错误:拒绝访问路径'/opt/app-root/src/project.lock.json'。

我的RHEL VM中的docker build目录中当前没有dotnet restore目录 - 我是否需要手动创建一个目录,或者我应该期望Docker在指定的目标目录路径中创建任何目录在app-root

更新:所以我手动创建了/opt路径,但仍然收到相同的错误,当Dockerfile文件夹中的/opt/app-root/src没有文件时。

我的Dockerfile内容不正确吗?我可以在项目文件夹中的bash提示符下运行ls -la并成功完成,但也说

  

锁定文件未更改。跳过锁定文件写入。

但那是在我的项目文件夹中的锁定文件上,而不是src中目标文件夹中的任何文件。

2 个答案:

答案 0 :(得分:1)

您引用的.NET Core图像是基于我们的源到图像工具构建的,因此您最好的选择是使用它。

你这样安装:

sudo yum install source-to-image

然后,输入您的ASP.NET Core项目的根目录(包含project.json)并使用s2i命令构建docker镜像。

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

使用以下命令运行名为myweb-dotnetcore-app的新创建的图像:

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

您可能需要更改端口以满足您的需求。

答案 1 :(得分:0)

我设法通过在运行project.lock.json命令之前将其删除来解决与docker build相关的错误。
这样做可以使dotnet restore成功完成。

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