Mik*_*ade 5 docker asp.net-core
我正在尝试从我的 Windows 10 机器上的 Docker 容器中运行一个全新的 ASP.NET 核心 MVC Web 应用程序。
我不是 docker 专家,但端口似乎没有绑定到主机上。我从容器内收到响应,但没有从主机收到响应。2.2 示例对我来说很好用。
dotnet --version
3.0.100-preview6-012264
Run Code Online (Sandbox Code Playgroud)
重现步骤:
mkdir aspnetcore3_test
cd .\aspnetcore3_test\
mkdir aspnetapp
cd .\aspnetapp\
dotnet new mvc
cd ..
dotnet new sln
dotnet sln "aspnetcore3_test.sln" add "aspnetapp/aspnetapp.csproj"
Run Code Online (Sandbox Code Playgroud)
创建一个包含以下内容的 docker 文件:
FROM mcr.microsoft.com/dotnet/core/sdk:3.0 AS build
WORKDIR /app
# copy csproj and restore as distinct layers
COPY *.sln .
COPY aspnetapp/*.csproj ./aspnetapp/
RUN dotnet restore ./aspnetapp/*.csproj
# copy everything else and build app
COPY aspnetapp/ ./aspnetapp/
WORKDIR /app/aspnetapp
RUN dotnet publish -c Release -o out
FROM mcr.microsoft.com/dotnet/core/aspnet:3.0 AS runtime
WORKDIR /app
COPY --from=build /app/aspnetapp/out ./
EXPOSE 80
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
Run Code Online (Sandbox Code Playgroud)
然后做 docker 位:
docker build -t dockertest .
docker run --rm -it --name=dockertest dockertest:latest -p 80:80
Run Code Online (Sandbox Code Playgroud)
Docker 运行输出以下内容:
warn: Microsoft.AspNetCore.DataProtection.Repositories.FileSystemXmlRepository[60]
Storing keys in a directory '/root/.aspnet/DataProtection-Keys' that may not be persisted outside of the container. Protected data will be unavailable when container is destroyed.warn: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[35]
No XML encryptor configured. Key {5b22d641-4632-4440-8f7d-8ad9b5e48098} may be persisted to storage in unencrypted form.
info: Microsoft.Hosting.Lifetime[0]
Now listening on: http://[::]:80
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Production
info: Microsoft.Hosting.Lifetime[0]
Content root path: /app
Run Code Online (Sandbox Code Playgroud)
运行 Firefox 的容器说它无法连接并且docker port dockertest显示为空
docker exec -i -t dockertest curl localhost 吐出模板MVC应用程序HTML
通过在图像名称-p 80:80 后面添加,您实际上是-p 80:80作为图像可执行文件的参数传递,而不是作为 docker 本身的参数传递。解决方案是将其移动到图像名称之前:
docker run --rm -it --name=dockertest -p 80:80 dockertest:latest
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3343 次 |
| 最近记录: |