Ami*_*ich 10 .net docker docker-toolbox asp.net-core
我已经用这个教程创建了我的第一个docker webapi项目.
我正在使用Windows 7(docker toolbox).
这就是我跑的:
dotnet new webapi
Run Code Online (Sandbox Code Playgroud)
这是Dockerfile:
FROM microsoft/dotnet:latest
COPY . /app
WORKDIR /app
RUN ["dotnet", "restore"]
RUN ["dotnet", "build"]
EXPOSE 5000/tcp
ENV ASPNETCORE_URLS http://*:5000
ENTRYPOINT ["dotnet", "run"]
Run Code Online (Sandbox Code Playgroud)
这就是我创建图像的方式:
docker build -t mydemos:aspnetcorehelloworld .
Run Code Online (Sandbox Code Playgroud)
这就是我创建和运行容器的方式:
docker run -d -p 8080:5000 -t mydemos:aspnetcorehelloworld
Run Code Online (Sandbox Code Playgroud)
我的服务成功运行为docker容器.
然后,我尝试更改Dockerfile以处理aspnetcore基本映像:
FROM microsoft/dotnet:latest 被改为 FROM microsoft/aspnetcore:1.0.1
新的Dockerfile看起来像:
FROM microsoft/aspnetcore:1.0.1
COPY . /app
WORKDIR /app
RUN ["dotnet", "restore"]
RUN ["dotnet", "build"]
EXPOSE 5000/tcp
ENV ASPNETCORE_URLS http://*:5000
ENTRYPOINT ["dotnet", "run"]
Run Code Online (Sandbox Code Playgroud)
现在,我尝试使用构建新图像
docker build -t mydemos:aspnetcorehelloworld1 .
Run Code Online (Sandbox Code Playgroud)
我收到一个错误.
这是构建日志:
Sending build context to Docker daemon 636.9 kB
Step 1/8 : FROM microsoft/aspnetcore:1.0.1
---> 2c7bbc508bb2
Step 2/8 : COPY . /app
---> Using cache
---> 1d5b9bd908b3
Step 3/8 : WORKDIR /app
---> Using cache
---> c1d5d091d111
Step 4/8 : RUN dotnet restore
---> Running in 8399e21caeb2
Did you mean to run dotnet SDK commands? Please install dotnet SDK from:
http://go.microsoft.com/fwlink/?LinkID=798306&clcid=0x409
The command 'dotnet restore' returned a non-zero code: 145
Run Code Online (Sandbox Code Playgroud)
我进入网址,重新安装的东西,我仍然得到一个错误.
我试图在同一命令行会话中使用dotnet cli命令,然后我成功(dotnet restore工作).
我试图搜索这个错误,但无法找到任何解决方案.
我在这里错过了什么?我在多次和测试中得到这个145错误.
Pol*_*ial 10
您使用的映像仅包含.NET Core运行时,而不包含SDK.尝试以下存储库中的基本映像:
https://hub.docker.com/r/microsoft/aspnetcore-build/
您的Dockerfile中包含以下行:
RUN ["dotnet", "restore"]
RUN ["dotnet", "build"]
Run Code Online (Sandbox Code Playgroud)
这意味着dotnet restore和dotnet build命令在您正在使用的图像中运行.由于您使用的图像没有安装SDK,因此无法找到这些命令,并且会在您看到时失败.我上面链接的存储库中的图像中安装了SDK,因此可以找到并执行dotnet restore和dotnet build命令.
安装SDK时使用基本映像的替代方法是在开发计算机上执行构建/发布过程,然后将已发布的输出复制到映像中.然后你的Dockerfile只需要查看以下内容:
FROM microsoft/aspnetcore:1.0.1
WORKDIR /app
COPY ./app .
ENTRYPOINT ["dotnet", "TheNameOfYourProject.dll"]
Run Code Online (Sandbox Code Playgroud)
请注意,现在dotnet在映像中运行的命令只是运行(预构建的)DLL的命令.这只需要运行时,而不是SDK.
| 归档时间: |
|
| 查看次数: |
10970 次 |
| 最近记录: |