如何在Docker容器中发布ASP.NET Core应用程序?

时间:2016-07-07 07:37:36

标签: asp.net .net docker docker-compose docker-machine

我想使用Visual Studio 2015在Docker容器中发布.net应用程序。

然而,在步骤:发布。我没有看到Docker Containers。 enter image description here

我安装了Docker Toolbox,VS2015 for Docker工具。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我目前还不知道为.NET发布Docker容器的GUI工具。 Docker来自Linux世界,其中大部分工作都是在命令行上完成的,并且手动编辑配置文件。以下是在docker容器中运行.NET进程所需遵循的基本过程。

使用DOCKER HOSTING LINUX上的.NET核心

Read this!

一般Docker流程

  1. 在Windows或Linux上设置Docker或Docker Toolbox(在计算机上的Virtualbox上运行的VM可以进行开发)
  2. 编写定义图像的.docker文件
  3. 使用docker命令在容器中运行Web API
  4. 第1号我将让您按照Docker网站上轻松找到的平台说明进行操作。

    编写dockerfile

    这样的事情,首先是:

        # Import the appropriate base container supplied by Microsoft
        FROM microsoft/aspnetcore:1.1.0
        # Name your process
        LABEL Name=mercury.docker.core-api Version=1.1.0 
        # Maps a folder on the host machine into the container, naming it SOURCE
        ARG source=./app
        # Creates a folder in the container and makes it the woring folder
        WORKDIR /app
        # Copies you application binaries from where you have put them (see next section) into the container
        COPY $source .
        EXPOSE 80
        ENTRYPOINT dotnet <you-main-app-file>.dll
    

    获取在容器中运行的Web API

    步骤:

    1. 为适当的主机环境(windows,ubuntu等)构建和发布应用程序
    2. 将发布的二进制文件复制到dockerfile所在文件夹下的\ app文件夹中。
    3. 转到Docker命令行,构建并运行容器
    4. 在project.json文件中指定要定位的环境,并确保为正确的环境构建和发布项目。例如,我们将容器定位为在Ubuntu上运行,因此我们需要buildpublish我们的该平台的二进制文件(目前为ubuntu.14.04-x64)。 此阶段在Visual Studio 2015 Update 3中不起作用,因此请使用命令行。在项目主目录中:

      dotnet build -r ubuntu.14.04-x64 --build-profile --configuration Release
      
      dotnet publish -r ubuntu.14.04-x64 --configuration Release -o ./bin/Release/Publish
      

      所需的二进制文件现在位于./bin/Release/Publish文件夹中。 Dockerfile当前需要它们位于Dockerfile所在目录的/ app子文件夹中,所以

      • 将发布的文件复制到/ app文件夹
      • 确保appsettings.json的合适副本是prsesent

      然后在您的Docker快速入门终端窗口(如果使用Docker Toolbox,您似乎是),或运行Ubuntu命令行,CD到您的dockerfile所在的文件夹并运行:

      docker build -t <name_you_want_to_use_for_your_image> .
      
      docker run -d -p 5500:80 -t <name_you_want_to_use_for_your_image>
      

      现在使用docker-machine ip default返回的docker-machine的IP地址测试API:

      curl http://<ip-address>:5500/<path appropriate for your api>>
      

      这应该返回预期的JSON。