在 RHEL - .NET Core 上拒绝访问 project.lock.json
Access to project.lock.json is denied on RHEL - .NET Core
我刚开始按照 Red Hat 提供的一些说明在 RHEL 7 上使用 .NET Core 和 Docker。
我使用 dotnet new -t web
创建了一个 .NET 核心 MVC 应用程序,然后在该文件夹中创建了我的 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"]
然后我尝试通过 运行ning
构建 Docker 图像
docker build -t mvc_docker
其中 mvc_docker
既是我在 运行 docker build
命令时所在的文件夹的名称,也是我要创建的图像的名称。
在 dotnet restore
期间一切看起来都很好,但后来我在控制台中收到此错误:
error: Access to the path '/opt/app-root/src/project.lock.json' is denied.
我的 RHEL VM 的 /opt
目录中目前没有 app-root
目录 - 我是否需要手动创建一个目录,或者我应该期望 Docker 创建任何目录在Dockerfile
?
中指定的目标目录路径
更新:所以我手动创建了/opt/app-root/src
路径但仍然得到同样的错误,当我在src
文件夹中ls -la
时没有文件。
我的Docker文件内容不正确吗?我可以 运行 dotnet restore
从我的项目文件夹中的 bash 提示,它成功完成但也说
Lock file has not changed. Skipping lock file write.
但这是我项目文件夹中的锁定文件,而不是 /opt
中目标文件夹中的任何文件。
我通过在 运行 我的 docker build
命令之前删除它来设法绕过与 project.lock.json
相关的错误。
这样做使 dotnet restore
成功完成。
遗憾的是,我现在又遇到了另一个错误,但那是针对另一个问题的。
您引用的 .NET Core 映像是使用我们的源到映像工具构建的,因此您最好的选择是使用它。
你这样安装:
sudo yum install source-to-image
然后,进入你的ASP.NET核心项目的根目录(包含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
您可能需要更改端口以满足您的需要。
我刚开始按照 Red Hat 提供的一些说明在 RHEL 7 上使用 .NET Core 和 Docker。
我使用 dotnet new -t web
创建了一个 .NET 核心 MVC 应用程序,然后在该文件夹中创建了我的 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"]
然后我尝试通过 运行ning
构建 Docker 图像docker build -t mvc_docker
其中 mvc_docker
既是我在 运行 docker build
命令时所在的文件夹的名称,也是我要创建的图像的名称。
在 dotnet restore
期间一切看起来都很好,但后来我在控制台中收到此错误:
error: Access to the path '/opt/app-root/src/project.lock.json' is denied.
我的 RHEL VM 的 /opt
目录中目前没有 app-root
目录 - 我是否需要手动创建一个目录,或者我应该期望 Docker 创建任何目录在Dockerfile
?
更新:所以我手动创建了/opt/app-root/src
路径但仍然得到同样的错误,当我在src
文件夹中ls -la
时没有文件。
我的Docker文件内容不正确吗?我可以 运行 dotnet restore
从我的项目文件夹中的 bash 提示,它成功完成但也说
Lock file has not changed. Skipping lock file write.
但这是我项目文件夹中的锁定文件,而不是 /opt
中目标文件夹中的任何文件。
我通过在 运行 我的 docker build
命令之前删除它来设法绕过与 project.lock.json
相关的错误。
这样做使 dotnet restore
成功完成。
遗憾的是,我现在又遇到了另一个错误,但那是针对另一个问题的。
您引用的 .NET Core 映像是使用我们的源到映像工具构建的,因此您最好的选择是使用它。
你这样安装:
sudo yum install source-to-image
然后,进入你的ASP.NET核心项目的根目录(包含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
您可能需要更改端口以满足您的需要。