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