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

Rafael Cruz

É desenvolvedor .NET há mais de 12 anos, certificado Microsoft desde de 2006, instrutor oficial Microsoft há 5 anos, Pós Graduado em Engenharia de Software pela UFRJ, suas certificações são Microsoft Certified Trainer, Microsoft Certified Solution Developer (Web, Application Lifecycle Management), Microsoft Certified Professional Developer, Microsoft Certified Tecnology Specialist.
Atualmente trabalha como arquiteto de sistema, escreve artigos no .NET Coders e no seu blog rafaelcruz.azurewebsites.net para compartilhar experiências na área de desenvolvimento Web, Aplicativos Móveis e Cloud Solutions.

Twitter LinkedIn 

Comentários

comentarios