Executando .NET Core Apps no Docker

27 jun

Como todos vocês sabem o mundo .NET está passando por diversas transformação nos últimos tempos.

Eis algumas transformação que estão sendo feitas nos últimos tempos no mundo .NET

  1. O .NET e o C# são open source e estão no GitHub
  2. .NET agora é multiplataforma rodando no Linux, Windows e Mac
  3.  A Microsoft está trazendo a experiência Linux no Windows com o Bash

Colocando tudo isso junto você começa ter uma experiência completa onde você pode desenvolver com C# no Windows ou no Mac , utilizando ferramentas no qual permite que desenvolvedores crie aplicativos de uma forma única em diversos ambientes da mesma maneira.

Com isso vamos criar uma nova maneira de construir aplicativos e neste post você aprenderá como criar aplicativos utilizando .NET Core e utilizando o Docker como container para executar a sua aplicação.

Configurando o .NET Core

Primeira coisa a ser feita é configurar o .NET Core localmente, estou usando Ubuntu 14.04 x64 e depois de configurado iremos criar nossa aplicação utilizando Yeoman.

Para instalar o .NET Core no Ubuntu, primeiramente devemos configurar o feed do apt-get utilizando o comandos abaixos:

sudo sh -c 'echo "deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/dotnet/ trusty main" > /etc/apt/sources.list.d/dotnetdev.list'
sudo apt-key adv --keyserver apt-mo.trafficmanager.net --recv-keys 417A0893
sudo apt-get update

Com o apt-get configurado, devemos instalar o .NET Core e para realizar essa tarefa basta executar o comando abaixo e ele instalará e .NET Core com todas as suas dependências

sudo apt-get install dotnet-dev-1.0.0-preview1-002702

 

Clique aqui para seguir os passos a passos da instalação do linux – Docs Oficial

Executando o .NET Core

O .NET Core contém uma serie de comandos para que você possa criar projetos .NET com facilidade

Veja alguns comandos:

  • dotnet new – Cria um novo projeto .NET Core
  • dotnet restore – Restaura os pacotes do nuget
  • dotnet run – Compila e executa um projeto .NET
  • dotnet build – Compila um projeto .NET
  • dotnet publish – Publica um projeto .NET incluindo o runtime

Para criar um novo projeto .NET Core irei abrir o Terminal e executar o comando dotnet new conforme figura abaixo:

dotnetCore1

Após a criação do projeto, vamos restaurar os pacotes necessários para a execução correta do projeto.

Para restaurar os pacotes necessários, execute o comando dotnet restore conforme figura abaixo:

dotnetCore2

Com os pacotes necessários instalados, vamos executar o comando dotnet run para ver nossa aplicação executando:

dotnetCore3

 

Criando um Projeto ASP.NET Core MVC

Agora que entendemos como funciona o .NET Core, vamos criar um projeto ASP.NET Core MVC, para se criar o projeto devemos utilizar o Yeoman.

Ele é um template generator muito utilizado na comunidade e claro o ASP.NET tem um template pronto no qual irá nos auxilar como criar nosso projeto.

Vamos primeiramente instalar o Yeoman para isso devemos executar o comando abaixo:

npm install -g yo bower grunt-cli gulp

Agora devemos instalar o ASP.NET Generator com o comando abaixo

npm install -g generator-aspnet

Com o ASP.NET Generator instalado, vamos criar nossa aplicação com o comando yo aspnet conforme figuras abaixo:

dotnetCore4

Escolha a opção Web Application, escolha o template bootstrap e coloque um nome para o projeto MVC, eu coloquei DockerMVC

Após a criação do projeto devemos executar o comando dotnet restore e dotnet run  assim vamos ver nossa aplicação em funcionamento conforme figuras abaixo:

dotnetCore5

dotnetCore6

Instalando o Docker no Linux

Para completar a ultima parte do nosso post devemos instalar o docker no linux. Para instalar o docker, irei utilizar os comandos abaixos:

apt-get -y install docker.io
ln -sf /usr/bin/docker.io /usr/local/bin/docker

Caso tudo esteja correto, você deverá ver a figura abaixo ao executar docker run hello-world

dotnetCore7

 

Publicando o Projeto no Docker

Com o docker instalado no linux, vamos publicar nossa aplicação no container docker.

A primeira coisa que devemos fazer é criar nosso pacote .NET Core e para isso irei utilizar o comando dotnet publish conforme figura abaixo

Porém antes de criar a publicação vamos alterar o arquivo Program.cs e adicionar o comando UseUrls para que aceite requisição de vindo de fora do servidor conforme código abaixo:

public class Program
    {
        public static void Main(string[] args)
        {
            var host = new WebHostBuilder()
                .UseKestrel()
                .UseContentRoot(Directory.GetCurrentDirectory())
                .UseIISIntegration()
                .UseStartup<Startup>()
                .UseUrls("http://*:5000/")	
                .Build();

            host.Run();
        }
    }

Agora estamos pronto para fazer nossa publicação, veja na figura abaixo o resultado da publicação do projeto

dotnetCore9

Com o comando dotnet publish ele criou os pacotes necessários para executar nossa aplicação, agora devemos criar o DockerFile. Ele é o arquivo responsável por publicar nossa aplicação no container docker

Para criar o arquivo irei utilizar o comando touch no mesmo diretório da aplicação e colocarei o nome do arquivo como dockerfile. 

Abra o arquivo em um editor de texto e copie os comandos abaixo:

FROM microsoft/dotnet:1.0.0-preview1
RUN mkdir /app
WORKDIR /app
COPY bin/Debug/netcoreapp1.0/publish/ /app/
EXPOSE 5000/tcp
ENTRYPOINT dotnet /app/DockerMVC.dll

Com o arquivo criado vamos instalar nossa aplicação no container docker utilizando o comando abaixo:

docker build -t aspnet .

Com o docker container instalado vamos executá-lo com o comando abaixo:

docker run -it -p 5000:5000 aspnet

Executando o comando vamos ver o nosso projeto no docker conforme figura abaixo:

dotnetCore11

 

Com isso concluímos o nosso post, o docker é realmente muito útil quando precisamos criar aplicações de forma isolada, com um rápido deploy e altamente escalável

Clique aqui para saber mais sobre o Docker

Clique aqui para saber mais sobre o .NET Core

Não deixem de comentar!

Abs e até a próxima

2 Replies to “Executando .NET Core Apps no Docker

    • Oi Fabiano, obrigado pela visita.

      O docker em si já traz algumas vantagens como isolamento da aplicação em container, possibilidade de instalação e criação de infraestrutura totalmente apartada em container, velocidade e facilidade em build e continous delivery entre outros e o .NET pode usar essas vantagens que o docker oferece.
      Lembrando que agora o docker vem como opção default para a nova versão do window server nano utilizando o windows container.

      Abs.,

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *