Criando uma Imagem Docker com Variáveis de Ambiente - ZeTheGreat/iotNodeJS GitHub Wiki

Criando uma Imagem Docker com Variáveis de Ambiente

Quando desejamos utilizar de credenciais de acesso de forma automatizada, para não expor a identidade do usuário, vale levar em consideração a utilização de variáveis de ambiente. Nesse artigo criaremos uma imagem docker com variáveis de ambiente para funcionar sua aplicação Node.js.

Criação da Imagem

Requisitos

Para nossa satisfação, precisamos de uma imagem que contém node.js + git instalados, afinal utilizaremos node para funcionar nosso projeto e git para enviá-lo para o Github, sendo assim um componente chave para um ambiente de Integração Contínua.

Se você já possi alguns conehcimentos em Docker, é fortemente recomendado que você crie uma imagem do zero, porém neste exemplo utilizaremos uma imagem pronta construída por um usuário da comunidade do Docker Hub.

Download

Ao perceber que nossas necessidades não foram supridas com a imagem oficial do node (por não possuir git instalado) fomos a procura de alguma imagem que continha essas duas tecnologias, com isso, encontramos essa: meetup/node-github. E será a base de criação para no própria imagem.

Para baixa-la, certifique-se de que o docker esteja intalado em sua máquina e digite o seguinte comando:

$ docker pull meetup/node-github

Após este passo se tudo acorreu conforme o planejado, a imagem deve aparecer na listagem deste comando:

$ docker images

Configuração da Imagem

Após feito o download precisamos acessar a imagem para dar início às configurações, para isso:

$ docker run -i -t <img-id> bash

Onde:

  • -i: indica que a imagem irá rodar em mode de interação;
  • -t: diz que irá utilizar do terminal;
  • <img-id>: deverá ser substituído pelo ID da sua imagem que aparece no docker images;
  • bash: informa qual o interpretador de comandos deseja utilizar, neste caso: bash.

Arquivo das variáveis

Ao acessar uma instancia bash, não necessariamente haverá todas as variáveis de ambiente configuradas na imagem, para que as variáveis fiquem portáveis, utilizaremos de um um arquivo, que será executado quando for necessário, este arquivo configura as variáveis de ambiente na instância local bash.

Sendo assim, escolha um local apropriado dentro de sua imagem e crie o arquivo de variáveis.

nota: O caminho e o nome do arquivo são totalmente arbitrários, tente escolher algo que faça sentido.

Com isso criaremos o arquivo env.sh dentro de /etc:

vim /etc/env.sh

Observação: Utilize o editor de sua preferência, também é possível criar o arquivo pelo comando touch /etc/env.sh.

Variáveis

As variáveis de ambiete seguem uma sintaxe:

export CHAVE="valor"

Onde:

  • export: exporta a variável para instância local bash;
  • CHAVE: como será chamada, em maiúsculo por convenção;
  • "valor": valor que a variável irá receber, entre aspas.

Com isso entendido, é possível criar suas próprias variáveis de ambiente, algumas sugestões:

export USU_GIT="gituser123"
export EMAIL_GIT="[email protected]"
export PASS_GIT="gitpass123"

Em nosso projeto node, o arquivo de variáveis também irá rodar um arquivo .sh contido na estrutura do projeto.

sh -c /caminho/para/arquivo/no/projeto
  • -c: verifica se o arquivo realmente existe.

Salve o arquivo e feche-o.

para ver se as variáveis estão de fato configuradas:

$ echo $USU_GIT
gituser123

Depois de verificado, dê um exit para sair do container.

Enviando a Imagem ao Docker Hub

Antes de qualquer passo, certifique-se de que você tenha uma conta no Docker Hub criada, aproveite e crie um repositório.

Login no Docker Hub

Para fazer login no Docker hub:

$ docker login

Entre com suas credenciais e você estará logado.

nota: sua senha do docker hub fica salva na máquina sem nenhum tipo de segurança.

Commitando o container

Ao sair do container, ele ficará disponível através do comando docker ps -a, rode este comnado e pegue o CONTAINER ID, em seguida:

$ docker commit <container-id> <usuário>/<repositorio>

Onde:

  • <container-id>: deverá ser substituído pelo id adquirido através do comando docker ps -a;
  • <repositório>: deverá ser substituído pelo nome do repositório criado no docker hub;
  • <usuário>: deverá ser substituído pelo seu usuário do docker hub.

Há a possibilidade de adição de tags, com isso a sintaxe ficaria desta forma:

$ docker commit <container-id> <usuário>/<repositorio>:<tag>

Tags são uteis para versionamento.

Push para o Docker Hub

Depois de commitado o container, verifique se o mesmo se transformou em uma imagem:

$ docker images

Se o commit for um sucesso, está na hora de envia-la para o docker hub:

$ docker push <usuário>/<repositorio>:<tag>
⚠️ **GitHub.com Fallback** ⚠️