Desenvolvimento

1 set, 2017

Publicando container Node no Heroku

Publicidade

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/