anúncios

terça-feira, 11 de outubro de 2022

Configurando e iniciando projeto Node.js no ambiente Docker

O objetivo deste post, é explicar os procedimentos de configuração e inicialização do projeto Node.js no ambiente Docker.

Preparando o ambiente Node.js no Docker

A premissa é ter o Docker e Docker-Compose instalados, caso ainda não tenha, verifique Instalando Docker e Docker Compose no Linux (qualquer distro) ou Instalando Docker no Windows 10

$ mkdir ambiente-nodejs-docker && cd ambiente-nodejs-docker

Cria o arquivo app.js


const http = require('http');

const hostname = '127.0.0.1';
const port = 3001;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World');
});

server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});

Além do arquivo .gitignore é recomendado criar o arquivo .dockerignore e adicionar o node_modules.

$ docker run --rm --volume "/home/reginaldo/ambiente-nodejs-docker:/usr/node/app" --workdir "/usr/node/app" -it node:18 bash

Estando conectado no container node, execute:

npm install nodemon -g
/srv/node/app/node_modules/.bin/nodemon app.js

Abra o browser http://localhost:3001 irá exibir na página "Hello World".

Configurando o ambiente Node.js com Docker Compose

Pode criar o arquivo docker-compose.yml no diretório de sua preferência, copie o arquivo app.js que é o servidor web do Node.js no diretório src

docker-compose.yml


version: '3'

services:
  node:
    image: node:18
    container_name: ambiente-node
    args:
      user: saitam
      uid: 1000
    ports:
      - '3001:3001'
    volumes:
      - ./src:/srv/node/app
    working_dir: /srv/node/app
    command: '/srv/node/app/node_modules/.bin/nodemon app.js'

docker-compose up -d

Abra o browser http://localhost:3001

Adicionando o Express

Conecte no container conforme segue:

$ docker exec -it ambiente-node bash

Estando no container ambiente-node, execute:

npm install express --save

Pode substituir o conteúdo no arquivo app.js


const express = require('express');
const app = express();

app.get('/', (req, res) => {
res.send('Hello World! na Home');
});

app.get('/hello', (req, res) => {
res.send('Hello World!');
});

app.listen(3001, 'http://127.0.0.1') {
console.log('app listening on port 3001!');
});

Como foi instalado o Nodemon que faz o watch do arquivo para atualizar, sem precisar reiniciar a execução do node app.js. Teste no browser http://localhost:3001 com as rotas que criou.

Pronto, agora já tem o ambiente de desenvolvimento Node.js no Docker, que pode utilizar em paralelo (Backend no Node.js e Frontend no React) com o ambiente React no Docker .

Feito!

Nenhum comentário:

Postar um comentário