Dockerizando Sua Aplicação Node.js
Dockerizar uma aplicação Node.js é uma excelente forma de garantir portabilidade, escalabilidade e facilidade no gerenciamento do ambiente de desenvolvimento e produção. Neste guia completo, você aprenderá passo a passo como colocar sua aplicação Node.js dentro de um contêiner Docker.
O Que é Docker?
Docker é uma plataforma de contêineres que permite empacotar e distribuir aplicativos junto com suas dependências e configurações. Isso garante que o software rode de forma consistente em qualquer ambiente, eliminando o clássico problema de “funciona na minha máquina”.
Benefícios de Dockerizar sua Aplicação Node.js
- Consistência: Garante que o ambiente seja o mesmo em desenvolvimento, teste e produção.
- Escalabilidade: Facilita a implantação e escalabilidade da aplicação.
- Portabilidade: Pode ser executado em qualquer sistema operacional que suporte Docker.
- Facilidade no Gerenciamento de Dependências: Todas as dependências são empacotadas no contêiner.
Pré-requisitos
Antes de começarmos, certifique-se de ter os seguintes requisitos instalados:
Criando a Aplicação Node.js
Caso ainda não tenha uma aplicação Node.js, você pode criar uma simples com o Express:
mkdir minha-app
cd minha-app
npm init -y
npm install express
Crie um arquivo server.js
com o seguinte conteúdo:
const express = require('express');
const app = express();
const PORT = process.env.PORT || 3000;
app.get('/', (req, res) => {
res.send('Olá, Docker!');
});
app.listen(PORT, () => {
console.log(`Servidor rodando na porta ${PORT}`);
});
Criando o Dockerfile
O Dockerfile
é um arquivo que contém as instruções para criar a imagem Docker da nossa aplicação. No diretório do projeto, crie um arquivo chamado Dockerfile
e adicione o seguinte conteúdo:
# Usa uma imagem oficial do Node.js como base
FROM node:18-alpine
# Define o diretório de trabalho dentro do contêiner
WORKDIR /app
# Copia os arquivos do projeto para o contêiner
COPY package.json .
COPY package-lock.json .
# Instala as dependências
RUN npm install
# Copia os arquivos restantes
COPY . .
# Expõe a porta da aplicação
EXPOSE 3000
# Comando para iniciar a aplicação
CMD ["node", "server.js"]
Criando o .dockerignore
Crie um arquivo .dockerignore
para evitar copiar arquivos desnecessários para o contêiner:
node_modules
npm-debug.log
.DS_Store
.git
Construindo e Rodando o Contêiner
Agora podemos construir a imagem Docker da aplicação e rodá-la dentro de um contêiner.
Construindo a Imagem
No terminal, execute:
docker build -t minha-app .
Rodando o Contêiner
Agora, execute o seguinte comando para rodar a aplicação dentro do contêiner:
docker run -p 3000:3000 minha-app
Acesse http://localhost:3000
no navegador e você verá a mensagem Olá, Docker!
.
Usando Docker Compose
O Docker Compose facilita a definição e execução de aplicações multi-contêiner. Para usá-lo, crie um arquivo docker-compose.yml
:
version: '3'
services:
app:
build: .
ports:
- "3000:3000"
volumes:
- .:/app
environment:
- NODE_ENV=development
Agora, basta rodar:
docker-compose up
Isso inicializará o contêiner e permitirá que a aplicação seja acessada em http://localhost:3000
.
Persistência com Volumes
Adicionar um volume no Docker Compose evita a necessidade de reconstruir a imagem sempre que um arquivo for alterado:
volumes:
- .:/app
- /app/node_modules
Conclusão
Dockerizar uma aplicação Node.js proporciona maior portabilidade e escalabilidade ao projeto. Com o uso de um Dockerfile
e docker-compose.yml
, podemos rodar a aplicação de maneira simplificada e eficiente. Agora você está pronto para levar sua aplicação ao próximo nível com Docker!