Deploy de Web Service NodeJS
Para o deploy de aplicações Web Node.js, é necessário manter o servidor Node.js em execução de forma contínua. Uma maneira eficaz de conseguir isso é através do uso do Docker, que permite encapsular o servidor Node.js e qualquer serviço relacionado, como bancos de dados, em containers isolados. Abaixo, detalhamos o processo de criação de um ambiente Docker com docker-compose
, a construção de um Dockerfile
para a aplicação Node.js, e a configuração de um servidor Nginx para gerenciar as requisições para a aplicação.
Criação do docker-compose.yml
docker-compose.yml
O uso do docker-compose
facilita o gerenciamento de múltiplos containers, permitindo definir e conectar um container Node.js a um banco de dados MySQL em um único arquivo de configuração. Aqui está um exemplo básico de como configurar esses serviços:
Dockerfile para a aplicação Node.js
O Dockerfile
define as instruções para construir a imagem Docker do servidor Node.js:
Script docker-entrypoint.sh
docker-entrypoint.sh
Para garantir que o servidor Node.js inicie somente após o banco de dados estar pronto para conexões, utilizamos um script de entrypoint:
Configuração do Nginx
Finalmente, para direcionar as requisições para o servidor Node.js rodando no container, configuramos um bloco location
no Nginx:
Aqui está uma explicação detalhada para cada seção e diretiva utilizada no arquivo docker-compose.yml
mencionado anteriormente. Esta explicação ajudará a entender como cada componente é configurado e como eles interagem dentro do ambiente Docker.
Docker Compose: Estrutura e Explicações
Versão: Define a versão do Docker Compose usada. A versão "3" é compatível com as versões mais recentes do Docker Engine e oferece recursos modernos de configuração.
Serviços
Serviços: Inicia a definição dos containers que serão gerenciados pelo Docker Compose.
DB: Configura um container MySQL.
image: Especifica a imagem Docker a ser usada, neste caso, a última versão do MySQL.
container_name: Define o nome do container.
command: Passa comandos adicionais para o servidor MySQL.
restart: Política de reinício do container.
volumes: Monta volumes para persistência de dados.
ports: Mapeia a porta 3306 do container para a mesma porta na máquina host.
environment: Define variáveis de ambiente necessárias para a configuração do MySQL.
networks: Especifica a rede a qual o container será conectado.
NodeApp: Configura um container para a aplicação Node.js.
container_name: Nome do container.
build: Diretório onde o Dockerfile está localizado, ponto (
.
) indica o diretório atual.image: Nome e tag da imagem a ser construída.
restart: Política de reinício.
ports: Mapeia a porta 4447 do container para a mesma porta na máquina host.
depends_on: Garante que o container
db
seja iniciado antes deste.networks: Conecta o container à rede especificada.
Volumes
Volumes: Define e gerencia volumes persistentes usados pelos containers, especificamente para o MySQL.
Redes
Redes: Define uma rede chamada internalnet
com o driver de rede bridge
, facilitando a comunicação entre os containers definidos no mesmo Docker Compose.
Last updated