Docker para desenvolvedores Node

Veja nesse artigo alguns conceitos básicos sobre Docker para iniciantes

Introdução

Quando você instala o docker, seja em um ambiente Windows ou Linux, ele cria uma rede local para que você possa criar os seus containers. Abaixo você tem uma imagem ilustrando esse passo:

A partir dessa rede você pode criar as suas sub-redes ou como mencionado acima, os seus containers.

Algo importante de se comentar, é que quando você trabalha em um ambiente Windows com o OS/Arch do seu Server Linux, você só pode trabalhar com imagens que foram desenvolvidos com base em uma distribuição linux. Quando você trabalha com o OS/Arch Windows, você só pode trabalhar com imagens baseadas em distribuição Windows. Abaixo você tem duas imagens demonstrando esses dois tipos de OS/Arch servers :

Linux
Windows

Por que é importante verificar esse ponto? Quando você tenta utilizar uma imagem que é diferente do seu server, o Docker engine identifica e retorna a seguinte mensagem de erro:

Erro de imagem plataforma

Nesse exemplo acima eu tentei baixar a imagem do nano server em um OS/Arch linux em um server linux, por esse motivo ele retornou o erro anterior.

Para demonstrar com mais detalhes essa questão do Arch, veja uma imagem abaixo demonstrando o Docker instalando nos Ambientes Windows e Linux.

Docker instalado nos ambientes Windows e Linux

Note que quando você instala o docker no seu computador ele reserva uma camada/espaço para ele, por esse motivo você só pode trabalhar com imagens baseadas no OS/Arch do seu server.

Dockerfile

Dockerfile é o arquivo onde colocamos tudo que precisamos para criação do nosso container. Nesse arquivo você pode especificar de qual imagem ele irá originar, o que precisa instalar, quais serviços irão rodar … etc.

Sua sintaxe é bem simples, com apenas alguns passos você pode dockerizar o seu projeto. Abaixo você tem uma breve descrição das camadas mais utilizadas em um arquivo Dockerfile.

FROM ponto de partida da sua imagem, pode ser um s.o como Ubuntu ou uma imagem criada a partir de um s.o como node:alpine

RUN pensando em uma imagem com node, você pode executar o comando npm install ou dotnet run no caso do .net core

COPY para copiar os arquivos do seu host para sua imagem

CMD comando de saída, aqui você pode executar o comando npm start, ng server … etc

Com o seu Dockerfile criado, você deve executar o comando docker build . para criação da sua imagem. Abaixo você tem uma imagem ilustrando esse processo:

docker build . (exemplo)

Para que você possa ter um melhor entendimento sobre esse assunto, eu irei criar uma imagem a partir de um projeto que eu tenho no GitHub. Caso tenha interesse em clonar ele, segue o seu link: Go Shima.

Esse projeto foi desenvolvido em Contruct2, o seu publish gera uma estrutura HTML. Para dockerizar esse projeto eu irei utilizar o ngnix como server.

Abrindo o arquivo Dockerfile dele você tem:

FROM nginx:alpine
COPY . /usr/share/nginx/html

Note que o from está baixando o ngnix:alpine, em seguida estou copiando todos os arquivos necessários para rodar o projeto da minha máquina “host” para imagem.

Execute o comando “docker build -t go-shima .” na raiz do projeto, esse processo deve demorar alguns segundos. Assim que ele finalizar, execute o comando abaixo no seu CMD para verificar se a imagem foi criada corretamente:

docker images

Abaixo você tem uma imagem demonstrando o resultado desse comando:

docker images

Agora para criar o seu container, execute o comando abaixo no seu CMD:

docker run -d -p 8080:80 go-shima

Abra o endereço http://localhost:8080/ no seu navegador e note que o game está executado dentro do seu container.

Docker Hub

Para que as suas imagens não fiquem somente no seu computador, quando você trabalha com docker, você pode subir e versionar elas em um repositório online chamado Docker Hub. Esse repositório funciona que nem o GitHub, com apenas alguns passos você pode criar uma conta, acessar e versionar a sua imagem.

Uma observação importante, a conta free te permite criar 1 repositório privado e n (até onde eu li) públicos. Caso tenha interesse em publicar a sua imagem, segue link de uma documentação com esse passo a passo: Docker Hub.

Abaixo você tem uma imagem demonstrando esse processo de versionamento/publish de uma imagem no Docker Hub:

Volumes

Em alguns cenários você precisará persistir os dados do seu container como por exemplo: no momento da gravação de logs, persistir os dados de um banco de dados em disco … etc.

Nesses cenários você pode mapear um local no seu computador com o seu container. Para exemplificar esse passo, eu irei utilizar uma imagem chamada Tutum criada para o MongoDB.

Altere a string abaixo para um local mapeado no seu computador, em seguida execute esse comando no seu terminal.

docker run -d -v "seu caminho":/data/db  -p 27017:27017 -p 28017:28017 -e AUTH=no tutum/mongodb

Para verificar se o volume foi mapeado corretamente, eu irei utilizar um dos recursos do Docker chamado Kitematic. Caso você não tenha ele instalado, basta clicar com o botão direito do seu mouse no Docker (baleiazinha branca), em seguida em Kitematic e fazer download:

Kitematic

Com ele aberto no seu computador, navegue até o seu contêiner criado no passo anterior, em seguida vá até settings e por fim em volumes. Abaixo você tem uma imagem demonstrando esse passo.

Agora você pode reiniciar o seu container, fazer um scale que os dados irão persistir em disco.

Bom, para esse artigo não ficar muito longo eu irei dividir ele em duas partes, essa com a introdução e a segunda parte com Docker Compose. Espero ter ajudado e até a segunda parte desse artigo pessoal.

Compartilhe:

Share on facebook
Facebook
Share on twitter
Twitter
Share on pinterest
Pinterest
Share on linkedin
LinkedIn

Table of Contents

Postagens Relacionadas

Maze Runner – Correr ou Morrer

Maze Runner – Correr ou Morrer O filme mostra o jovem Thomas (Dylan O’Brien), que vai parar em um lugar desconhecido, sem memória que o
TheWildsVidasSelvagens

the wilds: vidas selvagens

The Wilds: Vidas Selvagens The Wilds: Vidas Selvagens é uma série dramática de TV americana criada por Sarah Streicher que foi lançada no Prime Video
RockBottomRiser

Rock Bottom Riser

Rock Bottom Riser 01/03/2021(US) – Documentário – 1h 10min –   Nota: 0/10   Sinopse     Elenco Nainoa Thompson Como – master navigator Moses
SaferatHome

Safer at Home

Safer at Home 26/02/2021(US) – Filmes – 0h 0min –   Nota: 0/10   Sinopse     Elenco Mais informações Título Original Safer at Home