QPANC - Parte 18 - Docker - Maquina Virtual Linux
Tags: quasar, postgres, aspnetcore, docker
Published: 2020-04-19 23:39:29

> **QPANC** são as iniciais de **Q**uasar **P**ostgreSQL **A**SP **N**ET **C**ore.

  * [Source](https://github.com/TobyMosque/qpanc)
  * [Introdução](https://dev.to/quasar-pt-br/arquiteturando-uma-aplicacao-com-quasar-postgresql-asp-net-core-e-docker-introducao-o7o)
  * [Parte I - ASP.NET - Inicializando os Projetos](https://dev.to/quasar-pt-br/qpanc-parte-1-asp-net-inicializando-os-projetos-lkm)
  * [Parte 2 - PostgreSQL](https://dev.to/quasar-pt-br/qpanc-parte-2-postgresql-51pb)
  * [Parte 3 - ASP.NET - Registrando Serviços e Lendo Variáveis de Ambiente](https://dev.to/quasar-pt-br/qpanc-parte-3-asp-net-registrando-servicos-e-lendo-variaveis-de-ambiente-3do2)
  * [Parte 4 - ASP.NET - Entity Framework e ASP.NET Core Identity](https://dev.to/quasar-pt-br/qpanc-parte-4-asp-net-entity-framework-e-asp-net-core-identity-40f9)
  * [Parte 5 - ASP.NET - Documentação Interativa com Swagger](https://dev.to/quasar-pt-br/qpanc-parte-5-asp-net-documentacao-interativa-com-swagger-4n0o)
  * [Parte 6 - ASP.NET - Regionalização](https://dev.to/quasar-pt-br/qpanc-parte-6-asp-net-regionalizacao-13p5)
  * [Parte 7 - ASP.NET - Autenticação e Autorização](https://dev.to/quasar-pt-br/qpanc-parte-7-asp-net-autenticacao-e-autorizacao-bpd)
  * [Parte 8 - ASP.NET - CORS](https://dev.to/quasar-pt-br/qpanc-parte-8-asp-net-cors-52dn)
  * [Parte 9 - Quasar - Criação e Configuração do Projeto](https://dev.to/quasar-pt-br/qpanc-parte-9-quasar-criacao-e-configuracao-do-projeto-5hbi)
  * [Parte 10 - Quasar - Configurações e Customizações](https://dev.to/quasar-pt-br/qpanc-parte-10-quasar-configuracoes-e-customizacoes-2i86)
  * [Parte 11 - Quasar - Componentes - Diferença entre SPA e SSR](https://dev.to/quasar-pt-br/qpanc-parte-11-quasar-componentes-diferenca-entre-spa-e-ssr-1a3c)
  * [Parte 12 - Quasar - Serviços](https://dev.to/quasar-pt-br/qpanc-parte-12-quasar-servicos-4e61)
  * [Parte 13 - Quasar - Regionalização e Stores](https://dev.to/quasar-pt-br/qpanc-parte-13-quasar-regionalizacao-e-stores-1kep)
  * [Parte 14 - Quasar - Consumindo a API](https://dev.to/quasar-pt-br/qpanc-parte-14-quasar-consumindo-a-api-fn6)
  * [Parte 15 - Quasar - Login](https://dev.to/quasar-pt-br/qpanc-parte-15-quasar-login-jc6)
  * [Parte 16 - Quasar - Áreas Protegidas](https://dev.to/quasar-pt-br/qpanc-parte-16-quasar-areas-protegidas-3jkn)
  * [Parte 17 - Quasar - Registro](https://dev.to/quasar-pt-br/qpanc-parte-17-quasar-registro-3b8c)
  * [Parte 18 - Docker - Maquina Virtual Linux](https://dev.to/quasar-pt-br/qpanc-parte-18-docker-maquina-virtual-linux-g5c)
  * [Parte 19 - Docker - Registro e Build](https://dev.to/quasar-pt-br/qpanc-parte-19-docker-registro-e-build-31i4)
  * [Parte 20 - Docker - Traefik e Publicação](https://dev.to/quasar-pt-br/qpanc-parte-20-docker-traefik-e-publicacao-3g3d)
  * [Demo Online](https://qpanc.tobiasmesquita.dev)

##36 Configurando uma VM no Azure

Para publicar, iremos utilizar uma `VM` no `Azure`, de toda forma, você poderá optar por qual quer `VPS`, como as da `Digital Ocean`, `AWS`, `Hostiger`, `Hostgator`, `Locaweb`, dentre outros. Neste ponto, a unica exigência, é ser capaz de e conectar usando `SSH` e conseguir instalar o docker.

No caso do azure, você pode se inscrever no programa [Dev Essentials](https://visualstudio.microsoft.com/dev-essentials/), então acesse o site [My Visual Studio](https://my.visualstudio.com/Benefits) e ative o seu beneficio.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/nu3u9slxth14xgj3xnpc.png)

O próximo passo é criar uma maquina virtual, para tal acesse `https://portal.azure.com/` e adicione um novo recurso.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/ab0q6xrusnq13t7i1bb2.png)

Procure por `Ubuntu Server LTS`

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/rt6gcfbk6gbz364brxvo.png)

Na primeira aba, preencha os dados básicos sobre a `VM`, tipo o grupo de recursos, localização, tamanho, etc. Para fiz de testes, aconselho que selecione uma `VM` da serie `B`, para produção, o ideal é uma `VM` da Serie `D`.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/blwa1yxwpubyvpxr5cgu.png)
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/t5exvn1gw7upj1k5elyh.png)

Ainda na mesma aba, defina um usuário e uma senha, não esqueça de liberar as portas, especialmente a 443 (SSL) e a 22 (SSH).

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/w2kzicovuwrvf3jbv04x.png)

Na aba `Network`, certifique-se que o `IP` selecionado é `Static`

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/i1gh4gtqqrg1w6c9l4o0.png)

Por fim, na aba `Review + Create`, revise a `VM` e crie ela, então aguarde até que a `VM` esteja disponível.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/sp4hqlwnrvnlc7xd92z9.png)

Acesse a VM recém criada, então certifique que o `IP` é estático, copie o `IP` e defina um nome de `DNS`:

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/cv0dkro00jku3zw2ot6r.png)
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/cx2e0qzvh6ir2xviy05p.png)

Opcionalmente, você pode mapear o `IP` desta `VM` para um endereço na Web, para fazer isto pelo Azure, crie uma `DNS Zone`, e adicione o registro.:

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/k6b403kfbp2z6qg9zxrj.png)

##37 Instalando o Docker na VPS.

O primeiro passo é conectar na `VPS`, para isto abra o terminal (estou usando o `PS6`), e execute o seguinte comando:

```
ssh ${user_name}@${dns_address}
```
ou
```
ssh ${user_name}@${ip}
```

No meu caso:

```
ssh qpanc@qpanc.eastus2.cloudapp.azure.com
```

Aceite o certificado e informe a senha (você definiu esta senha durante a criação da `VM`).

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/ou4f3td261l99prx6jpl.png)

Feito isto, agora é hora de instalar o docker:

```
sudo apt-get update
sudo apt-get install docker.io
sudo docker -v
```

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/arj93cywejcfampmkpoo.png)

Agora, precisamos instalar o `docker-compose`, apenas **NÃO** caia na tentação de executar `sudo apt-get install docker-compose`, pois isto irá instalar uma versão bem antiga, ao invés disto, execute os seguintes comandos:

```
sudo curl -L "https://github.com/docker/compose/releases/download/1.27.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
sudo docker-compose -v
```

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/36751t9x3qeqzjd00xt6.png)