【发布时间】:2018-03-09 00:25:11
【问题描述】:
所以,我正在学习 Docker 并且是新手,我正在尝试使用 docker run 命令运行从 Visual Studio 2017 生成的映像。
一些背景:
目的是将docker镜像发布到Container Registry(我正在使用gitlab),在DigitalOcean中创建一个docker droplet并拉取镜像并运行它。
我正在尝试构建一个发布映像并首先在本地运行它。
我有一个包含 3 个项目的 VS 解决方案:
- .net core mvc
- .net 核心库
- .net核心接口
我有一个 docker compose 文件,每个项目都有一个 docker 文件。全部由 Visual Studio 使用 docker 支持工具生成。
我可以在 VS 中以调试和发布模式构建和运行,它运行映像,我可以浏览到 Web 应用程序和 api - 一切都很好。
我试图按照这个问题的答案:
How to run docker image produced by VS 2017
所以我试过了:
docker run --rm -p 80:5000 -d myapp.web:latest
我在浏览器中尝试了http://localhost:5000 和http://127.0.0.1:5000 都无法加载或解析。
我可以通过docker images命令看到下面VS生成的docker镜像
REPOSITORY TAG IMAGE ID CREATED SIZE
myapp.apinet latest b3fa6d92bd23 24 hours ago 305MB
myapp.web latest f418d4571ac3 24 hours ago 315MB
<none> <none> 50c89857daf1 24 hours ago 315MB
如果有帮助,我的 docker 文件之一:
FROM microsoft/aspnetcore:2.0 AS base
WORKDIR /app
EXPOSE 80
FROM microsoft/aspnetcore-build:2.0 AS build
WORKDIR /src
COPY *.sln ./
COPY src/myapp.Web/myapp.Web.csproj src/myapp.Web/
COPY src/myapp.Core/myapp.Core.csproj src/myapp.Core/
RUN dotnet restore
COPY . .
WORKDIR /src/src/myapp.Web
RUN dotnet build -c Release -o /app
FROM build AS publish
RUN dotnet publish -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "myapp.Web.dll"]
我还使用 docker inspect myapp.web 检查了 docker 映像,并且端口 80 已暴露:
"ExposedPorts": {
"80/tcp": {}
},
我已经尝试了来自https://github.com/dotnet/dotnet-docker/tree/master/samples/aspnetapp 的 asp.net 核心示例,如下所示,效果很好。
docker run --rm -p 8000:80 --name aspnetcore_sample microsoft/dotnet-samples:aspnetapp
有什么建议或想法吗?
【问题讨论】:
标签: visual-studio docker docker-compose asp.net-core-2.0