2017-07-31 36 views
0

按照Red Hat提供的一些說明,我剛剛開始在RHEL 7上使用.NET Core和Docker。在RHEL上拒絕訪問project.lock.json - .NET Core

我創建使用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"] 

我再嘗試運行

打造泊塢窗圖像
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.

目前還沒有app-root目錄在我的RHEL虛擬機的/opt目錄 - 我是否需要手動創建一個,或者我應該期望Docker在Dockerfile中指定的目標目錄路徑中創建任何目錄?

更新:所以我手動創建了/opt/app-root/src路徑但仍然得到相同的錯誤,並且當我在src文件夾中ls -la沒有文件。

我的Dockerfile內容是否不正確?我可以在我的項目文件夾中運行從bash提示符dotnet restore併成功完成後,也說

Lock file has not changed. Skipping lock file write.

但是,這是在我的項目文件夾中的文件鎖定,而不是我的目標文件夾中/opt的任何文件。

回答

1

您參考的.NET Core圖像是以我們的源圖像工具爲基礎構建的,所以最好的選擇就是使用它。

你安裝它是這樣的:

sudo yum install source-to-image 

然後,輸入您的ASP.NET核心項目的根目錄下(含project.json),並使用s2i命令建立一個碼頭工人的形象。

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

和運行使用名爲myweb-dotnetcore-app新創建的圖像:

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

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

0

在我運行我的docker build命令之前,我設法解決了與project.lock.json有關的錯誤。
這樣做使dotnet restore成功完成。

不幸的是我現在正在得到另一個錯誤,但這將是一個不同的問題。