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
- O .NET e o C# são open source e estão no GitHub
- .NET agora é multiplataforma rodando no Linux, Windows e Mac
- 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:
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:
Com os pacotes necessários instalados, vamos executar o comando dotnet run para ver nossa aplicação executando:
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:
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:
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
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
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:
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
Qual a vantagem de se usar o Docker com o .NET?
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.,