Publicando container Node no Heroku

Thiago S. Adriano
Aug 28, 2017 · 3 min read
Container Docker on Heroku

O objetivo desse artigo será a criação de uma imagem de uma aplicação Web desenvolvida em Node.js com 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 o package.json e server.js. Com o diretório e os arquivos criados abra um editor de texto de sua preferencia, em seguida vamos colar o código a baixo dentro no 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 a baixo 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 estiver OK irá aparecer a mensagem a baixo no terminal do seu Visual Studio Code:

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

FROM node:boronWORKDIR /appCOPY . .CMD NODE_URLS=http://*:$PORT npm start

Vamos navegar pelas linhas do nosso arquivo:

FROM node:boron

Nessa primeira linha nos estamos definindo qual imagem iremos utilizar.

WORKDIR /app

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

COPY . .

Nesse 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 ira precisar ser executado para rodar o nosso container.

Com tudo OK vamos agora criar a nossa imagem. Para isso, execute o comando a baixo no seu terminal dentro do diretório do 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.

Nosso próximo passo sera executar a nossa imagem. Para isso execute o comando a baixo 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 verificar os containers que estão sendo executados.

Abra no seu navegador o endereço http://localhost/ , caso tudo OK ira aparecer a mensagem Hello world.

Vamos agora criar a tag da nossa imagem para que possamos subir ela no Heroku, execute o comando a baixo 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 a baixo 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 a baixo no seu terminal:

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

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

)

Thiago S. Adriano

Written by

Enjoy your life

XP Inc.

XP Inc.

Aqui você vai encontrar os principais conteúdos de tecnologia da XP Inc.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade