visual-studio - 如何在Visual Studio 2017中将Docker与发布版docker compose一起使用

标签 visual-studio docker docker-compose asp.net-core-2.0

因此,我正在学习Docker并对此感到陌生,并且尝试使用docker run命令运行从Visual Studio 2017生成的图像。

一些背景:

目的是将docker镜像发布到Container Registry(我正在使用gitlab),在DigitalOcean中创建docker drop并拉出镜像并运行它。

我正在尝试构建发布镜像并首先在本地运行它。

我有一个包含3个项目的VS解决方案:

  • .net核心mvc
  • .net核心库
  • .net核心API

  • 我有一个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:5000http://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/

    相关文章:

    windows - 为什么 visual studio 2012 不能安装在 windows xp 中?

    Android 设备未显示为 Unity3d 调试的目标

    ruby-on-rails - 错误-迁移正在进行中。要解决此问题,请运行:bin/rake db:migrate RAILS_ENV = development

    angular - 提供静态文件时,nginx docker 容器出现 Forbidden 403 错误

    c++ - Qt 使用 singleShot Timer 从 QGraphicsScene 中删除 QGraphicsItem?

    c# - 在 Visual Studio 2008 中为 .Net 托管应用程序从 WinDbg 调试 .dmp 文件

    docker - docker容器id是如何生成的

    postgresql - 无法使用docker连接到ipv6中的postgres

    docker - 在GitHub中声明Docker选项

    amazon-web-services - 使用 ecs-cli 在 AWS 上部署 docker 时遇到问题