Como subir aplicação NodeJS com Docker
Olá pessoal, tudo bem por ai? Bom no post de hoje vamos ver Como subir aplicação NodeJS com Docker de uma forma simples!
A ideia de hoje é:
- Mostrar como você vai criar seu código em NodeJs (Código simples, disponível aqui no próprio site do nodejs.org);
- Explicar do arquivo Dockerfile e os parâmetros necessários para ele subir;
- Gerar uma imagem com tudo que fizemos;
- Subir a aplicação e conferir se tudo certinho! =)
Antes de mais nada, já viu que estamos no Youtube? Dá um confere lá e ajuda a fortalecer a nossa comunidade!
Você que está iniciando no mundo do Docker, aconselho fortemente a usar um editor como o VSCode! Ele trás facilidades, adianta bastante nosso trabalho e nos mostra alguns erros que podemos estar cometendo no código.
TODO ESSSE PROJETO ESTÁ NO GITHUB OFICIAL DA COFFIOS, CORRE LÁ!
Código simples para subir nossa aplicação
Bom pessoal, como falei vou pegar um código simples que está disponível AQUI para subir uma aplicação em NodeJS.
Esse código basicamente retorna o nosso famoso “Hello World”, mas aqui eu mudei para “Bem vindo a Coffops!”
const http = require('http');
const hostname = '0.0.0.0';
const port = 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Bem vindo a Coffops!');
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
Existem alguns outros parâmetros que são declarados aqui como a porta que o NodeJS vai disponibilizar para conexão, o IP ou Hostname no qual a aplicação vai estar disponível e se em algum momento surgir qualquer dúvida relacionada a isso, deixa ai nos comentários! =)
Criando nosso Dockerfile
Bom, agora vamos construir nosso Dockerfile, que nada mais é do que o passo a passo que o container vai fazer para conseguir subir nossa aplicação.
Aqui, basicamente você vai fazer todo aquele passo a passo manual que você fazia no seu servidor Linux das antigas, e tudo isso vira uma “receita de bolo” que pode ser “versionada” e controlada de uma forma bem simples.
Vamos ao Dockerfile:
FROM NODE
WORKDIR /appjs
COPY app.js .
EXPOSE 3000
CMD ["node", "index.js"]
Explicando:
- FROM node informa de qual imagem será gerada essa imagem atual que estamos fazendo;
- WORKDIR /appjs informa qual será o diretório de trabalho desse container;
- COPY app.js . copia o arquivo app.js para nosso diretório de trabalho, appjs;
- EXPOSE 3000 expoe a porta para acesso a aplicação, a mesma que definimos lá no app.js;
- CMD [“node”, “index.js”] é o comando que vai ser executado ao final de todo o processo, subindo nossa aplicação NodeJS;
Gerar uma imagem
Quando falei que o VSCode dá uma facilitada na nossa vida, eu trago verdades.
Dentro do VSCode vamos gerar a imagem do nosso container e via terminal, usando o comando docker build -t coffops_nodejs:dev-v0.1 .
Note que eu passo os parâmetros coffops_nodejs que é o nome da minha imagem e logo após dev-v0.1 que é a TAG da minha imagem.
Quando você for trabalhar em grandes projetos, pipelines, etc, a TAG da imagem vai ser super importante para você gerenciar suas versões.
Após isso, ao executar o comando docker image ls vamos ver a seguinte saída:
Subir a aplicação e conferir se tudo certinho!
Bom, agora que já temos nossa imagem, rodar o comando docker run –name coffops_nodejs_app -p 3000:3000 -d coffops_nodejs:dev-v0.1
Explicando:
- -p 3000:3000 mapeia a porta 3000 do host para a porta 3000 do container;
- -d coffops_nodejs:dev-v0.1 diz qual imagem e tag vamos usar;
- –name coffops_nodejs_app passamos um nome para nosso container;
Após isso conseguimos conferir se o container está rodando usando o comando docker ps:
Agora, ao acessar o endereço http://localhost:3000 teremos o seguinte resultado:
Agora temos a aplicação rodando na porta 3000 do localhost como era o propósito desse vídeo.
Existem várias detalhes dessa artigo que foram abstraído e em um futuro vamos tratar de forma mais especifica.