按照Docker页面上的说明,我创建了一个非常简单的Dockerfile,如下所示:
FROM microsoft/dotnet:sdk AS build-env
WORKDIR /app
# Copy csproj and restore as distinct layers
COPY *.csproj ./
RUN dotnet restore
# Copy everything else and build
COPY . ./
RUN dotnet publish -c Release -o out
# Build runtime image
FROM microsoft/dotnet:aspnetcore-runtime
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "dockertest.dll"]
这实际上是Docker site上的示例副本,只是更改了应用程序名称。
我使用Visual Studio for Mac创建了一个非常简单的ASP.Net应用程序(实际上只是添加了一个很小的HTML文件的默认应用程序)。
我第一次运行docker build -t dockertest .
时,与dotnet publish
的行失败了。然后,我手动运行了dotnet publish
并通过了它。
现在复制失败:
步骤9/10:复制--from = build-env / app / out。
COPY failed: stat /var/lib/docker/overlay2/1484306cebf1def83638270757e70a8cf874fb5a167f39e5bfaae92a47cc071c/merged/app/out: no such file or directory
这是怎么回事?
答案 0 :(得分:0)
那么您是在容器内还是在主机上运行dotnet publish
? Docker文件正在尝试在容器内运行这些命令,因此在主机上运行这些命令将无法解决问题。
您是否尝试过右键单击项目,然后在VS for Mac中将“添加Docker支持”添加到您的应用程序中?它会生成一个docker文件,然后您可以从VS中在容器内运行/调试应用。