Dev (Back & Front)ARTIGO

Publicando container Node no Heroku

Publicando container Node no Heroku

O objetivo deste artigo será a criação de uma imagem de uma aplicação Web desenvolvida em Node.js e a sua publicação em um container no Heroku.

Nosso primeiro passo será escolhermos um diretório para o nosso projeto e a criação de dois novos arquivos dentro dele: package.json e server.js. Com o diretório e os arquivos criados abra um editor de texto de sua preferencia. Agora vamos colar o código a baixo dentro do nosso arquivo package.json.

{
"name": "nodejs-docker",
"version": "1.0.0",
"description": "Node.js on Docker",
"author": "tadriano.net@outlook.com",
"main": "server.js",
"scripts": {
"start": "node server.js"
},
"dependencies": {
"express": "^4.13.3"
 }
}

Agora adicione o código abaixo no seu arquivo server.js.

'use strict';
const express = require('express');
// Constants
const PORT = process.env.PORT || 3000;
const HOST = '127.0.0.1';
// App
const app = express();
app.get('/', (req, res) => {
 res.send('Hello world\n');
});
app.listen(PORT, HOST);
console.log(`Running on http://${HOST}:${PORT}`);

Agora execute o comando npm install para baixar os nossos pacotes, assim que ele finalizar execute npm start para que possamos verificar se o projeto esta rodando corretamente.

Caso tudo esteja OK irá aparecer a mensagem abaixo no terminal do seu Visual Studio Code:

Publicando container Node no Heroku

Bom, até este ponto não vimos nenhuma novidade, somente criamos uma aplicação simples em Node. Vamos agora criar o nosso arquivo DockerFile.

FROM node:boron
WORKDIR /app
COPY . .
CMD NODE_URLS=http://*:$PORT npm start

Vamos navegar pelas linhas do nosso arquivo:

FROM node:boron

Nessa primeira linha nós estamos definindo qual imagem iremos utilizar.

WORKDIR /app

Neste passo nós estamos definindo o diretório dentro da nossa aplicação que ira executar o nosso código.

COPY . .

Neste ponto iremos copiar os arquivos do nosso diretório local para dentro da nossa imagem.

CMD NODE_URLS=http://*:$PORT npm start

Por fim estamos criando uma variável local para receber a porta dinamicamente e passando o comando que irá precisar ser executado para rodar o nosso container.

Com tudo OK vamos agora criar a nossa imagem. Para isso, execute o comando abaixo no seu terminal dentro do diretório que você criou o seu arquivo DockerFile.

docker build -t nodejs-docker .

Agora execute o comando docker images para verificar se a imagem foi criada corretamente.

Publicando container Node no Heroku

Nosso próximo passo será executar a nossa imagem. Para isso execute o comando abaixo no seu terminal:

docker run -p 80:8080 nodejs-docker

Agora para verificarmos se o nosso container esta executando corretamente iremos utilizar o comando docker ps. Ele verifica os containers que estão sendo executados.

Abra no seu navegador o endereço http://localhost/. Caso tudo esteja OK irá aparecer a mensagem Hello world.

Vamos agora criar a tag da nossa imagem para que possamos subir no Heroku, execute o comando abaixo no seu terminal:

docker tag nodejs-docker registry.heroku.com/nodejs-docker/web

Nosso próximo passo será logar no Heroku. Para isso, execute o comando abaixo no seu terminal, assim que ele terminar execute o segundo comando para enviar a sua imagem.

heroku container:login
docker push registry.heroku.com/nodejs-docker/web

Caso tudo esteja OK você irá receber o resultado abaixo no seu terminal:

Publicando container Node no Heroku

Por fim, podemos abrir no nosso navegador a URL abaixo e ver o nosso container sendo executado no Heroku.

https://nodejs-docker.herokuapp.com/

Microsoft (MVP), atualmente trabalha como Arquiteto de Software para TV Bandeirantes. Nesses últimos anos, focou nas tecnologias criadas pela Microsoft, mas sempre esteve antenado para as novas tecnologias que estão surgindo no mercado. Em um breve resumo, é uma pessoa apaixonada pelo que faz, tem a sua profissão como hobby.

Ver perfil