在ASP.NET Core中构builddocker:“没有这样的文件或目录”错误
当我build立我的docker时,出现错误。
Sending build context to Docker daemon 3.584 kB Step 1/8 : FROM microsoft/aspnetcore:1.1 ---> 2628aaa7b8cf Step 2/8 : ENV ASPNETCORE_URLS "http://*:5000" ---> Using cache ---> 5dffde204fef Step 3/8 : ENV ASPNETCORE_ENVIRONMENT "Development" ---> Using cache ---> 3064358bc0eb Step 4/8 : ARG source ---> Using cache ---> 4159d0eb78c0 Step 5/8 : WORKDIR /app ---> Using cache ---> 61a394c84304 Step 6/8 : EXPOSE 5000 ---> Using cache ---> c7c2309f7085 Step 7/8 : COPY ${source:-obj/Docker/publish} . lstat obj/Docker/publish: no such file or directory
这是我的Dockerfile。
FROM microsoft/aspnetcore:1.1 ENV ASPNETCORE_URLS="http://*:5000" ENV ASPNETCORE_ENVIRONMENT="Development" ARG source WORKDIR /app EXPOSE 5000 COPY ${source:-obj/Docker/publish} . ENTRYPOINT ["dotnet", "ProjectTestApi.dll"
我运行一个命令:
$ docker build -t my-docker-image-test .
你有什么问题吗?
这是因为你没有发布你的解决scheme。 错误信息是不言自明的:
no such file or directory
默认情况下,当您向您的ASP.NET Core Visual Studio 2017项目添加Docker支持时,会创build一堆docker-compose.yml
文件,其中一个是处理构build过程docker-compose.ci.build.yml
。 然后,当您通过Visual Studio生成项目时,将执行完整的docker-compose
pipe道。
docker-compose.ci.build.yml
的内容与此类似(显然取决于自定义configuration和项目名称):
version: '2' services: ci-build: image: microsoft/aspnetcore-build:1.0-1.1 volumes: - .:/src working_dir: /src command: /bin/bash -c "dotnet restore ./SolutionName.sln && dotnet publish ./SolutionName.sln -c Release -o ./obj/Docker/publish"
正如你可以在最后一行看到的那样,调用了一个dotnet publish
命令,它实际上构build并发布了你的项目。
所以你的问题的解决scheme ,将只是在调用docker之前构build项目:
dotnet publish ./SolutionName.sln -c Release -o ./obj/Docker/publish docker build -t my-docker-image-test .
当您在Visual Studio 2017中使用“添加Docker支持”选项时,VS会生成一堆docker-compose文件和Docker文件。 正如Marcin Zablocki提到的,其中一个是docker-compose.ci.build.yml
。
为了与Docker理念保持一致,您可以使用Docker容器来发布您的项目。 要发布您的项目,您将采取以下步骤:
-
git clone/pull
你的项目&CD到根目录 - 用
docker-compose -f docker-compose.ci.build.yml up
发布你的项目 - 用
docker-compose up
开始你的项目吧
我遇到了主项目的Dockerfile
出现问题的情况。 这发生在FROM microsoft/aspnetcore:1.1
,你可以改变它FROM microsoft/aspnetcore:1.1.2
或任何版本是您的项目所需要的。
- 使用Windows身份validation将在Linux容器中运行的.NET API与在VM中运行的SQL Server连接起来
- 启动时出现Dotnetcore容器错误,询问是否运行SDK命令
- Net Core 2.0 – 部署时响应速度慢。 总是100ms +
- 如何构build两个二进制文件.net core 2控制台应用程序
- Webpack,asp.net核心,docker:用dotnetdebugging或发布构buildwebpack
- 在Docker中为自己的容器.Net Core应用程序指定运行时
- 是否有可能从Docker容器中运行我的开发asp.net核心服务器
- rabbitmq优雅的出口应该等待事件处理者
- 在Jenkins上构build和部署Docker需要越来越多的时间