因此,我正在学习Docker并对此感到陌生,并且尝试使用docker run
命令运行从Visual Studio 2017生成的图像。
一些背景:
目的是将docker镜像发布到Container Registry(我正在使用gitlab),在DigitalOcean中创建docker drop并拉出镜像并运行它。
我正在尝试构建发布镜像并首先在本地运行它。
我有一个包含3个项目的VS解决方案:
我有一个docker compose文件,每个项目都有一个docker文件。所有这些都是由Visual Studio使用docker支持工具生成的。
我可以在VS中以调试和 Release模式构建和运行,它可以运行镜像,并且可以浏览到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
有什么建议或想法吗?
最佳答案
只是想在这里隔离问题。当我在这里与您合作时,请多多包涵。会尽力帮助:
Q1您是否将Docker用于Windows Pro / Ent或Docker Toolbox用于Windows Home?
Q2您正在使用哪个版本的VS2017? docker是否预装了它?还是您单独安装了它?
问题3,既然您提到过docker compose,您是否尝试过运行docker-compose?
Q4您修改了dockerfile吗?我觉得奇怪的是,您的dockerfile示例仅用于构建Web而不是核心。还有Web引用核心项目吗?因为它是Cuz,但尚未编译,则可能无法运行网络应用
问题5(仅在使用docker工具箱的情况下),您忘记使用docker-machine ip的IP地址而不是localhost了吗?
另外,请查看我在本文中的答复,看看您是否错过了任何事情。 (可能不适用于您的情况!)
How to get docker toolbox to work with .net core 2.0 project
关于visual-studio - 如何在Visual Studio 2017中将Docker与发布版docker compose一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49184741/