根据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
中目标文件夹中的任何文件。
答案 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
成功完成。
可悲的是,我现在又遇到了另一个错误,但这将是一个不同的问题。