Como publicar imagens Docker do Node.js no registro do Docker Hub usando o GitHub Actions
9 de agosto de 2021
0 minutos de leituraEm uma publicação anterior, apresentamos um tutorial passo a passo sobre como publicar imagens Docker do Node.js no registro do GitHub Packages usando o GitHub Actions. Nesta publicação, vamos mostrar como publicar no registro público do Docker Hub a imagem Docker que criamos.
Por que isso é útil, você deve estar se perguntando. O aplicativo de linha de comando do Docker, docker, usa docker.io como registro padrão, que aponta para o registro do Docker Hub. Isso facilita a experiência de desenvolvimento: você pode baixar imagens usando a convenção <user>/<repository>, como no exemplo abaixo, caso queira usar a CLI do Snyk como imagem Docker:
Neste artigo, vamos percorrer um passo a passo para configurar outro fluxo de trabalho de criação e publicação de imagens Docker, que pode funcionar em paralelo ao fluxo que apresentamos anteriormente para o registro do GitHub Packages.
Assim como a publicação anterior, esta dá continuidade ao conteúdo sobre o Dockly, uma ferramenta de linha de comando de código aberto, escrita em Node.js, para gerenciar contêineres Docker pela CLI, e mostra como enviar uma imagem Docker para o Docker Hub. Você pode conferir o fluxo de trabalho final no repositório do Dockly no GitHub.
Criar um fluxo de trabalho do GitHub Actions
Para adicionar um novo fluxo de trabalho, basta criar um arquivo no diretório .github/workflows/ ou acessar seu repositório de código aberto no GitHub, clicar na aba Actions, depois em New Workflow e iniciar um novo fluxo de trabalho:

Escolha um nome para o arquivo do fluxo de publicação no Docker Hub, como docker-publish-to-dockerhub.yml.
Se você estiver fazendo isso pela interface do GitHub, talvez o arquivo do fluxo de trabalho já venha preenchido. Nesse caso, basta apagar o conteúdo e adicionar o seguinte:
Detalhamos cada um desses pontos no artigo anterior, mas, para relembrar:
Esse fluxo de trabalho do Docker Hub será executado a cada push, lançamento de tag e pull request direcionados à branch principal do repositório.
As variáveis de ambiente globais definem
REGISTRYcomodocker.io, ou seja, nossas imagens serão enviadas ao Docker Hub e ficarão disponíveis lá. JáIMAGE_NAMErecebe o nome de usuário e o nome do repositório do GitHub. Se seu nome de usuário no Docker Hub for diferente, talvez seja necessário ajustar esse valor.
Em seguida, vamos definir os jobs, que estabelecerão o processo de criação da imagem Docker e, depois, de publicação.
Fazer login no Docker Hub e criar e publicar a imagem Docker
Em seguida, precisamos realizar as seguintes ações:
Fazer login no Docker Hub. Para isso, precisamos criar um token no Docker Hub e configurá-lo como um segredo do repositório nas configurações do repositório do GitHub.
Extrair os metadados da imagem Docker que criamos para que fiquem disponíveis durante o processo de criação da imagem.
Enviar ao Docker Hub a imagem Docker criada.
O trecho de código abaixo configura essas etapas. Adicione-o ao conteúdo do fluxo de trabalho criado na etapa anterior:
Depois de aplicar o arquivo do fluxo de trabalho e mesclá-lo à branch principal, você deverá obter uma criação bem-sucedida, que resultará no envio de uma nova imagem Docker ao registro do Docker Hub:

Uma ressalva conhecida é que, por enquanto, o repositório do Docker Hub para o qual você publica a imagem não recebe automaticamente uma descrição adequada nem o conteúdo do README, porque isso não está disponível na GitHub Action oficial docker/build-and-push.
Se você quiser adicionar esse recurso, os mantenedores recomendam a GitHub Action do Marketplace Docker Hub Description e indicam um exemplo na documentação que você pode adotar.
Baixar imagens Docker do registro do Docker Hub
Para baixar a nova imagem Docker do Docker Hub, basta executar o conhecido comando docker pull , por exemplo:
Você está enviando imagens Docker vulneráveis?
Por que parar por aqui? Com o Snyk, você pode encontrar, monitorar e até corrigir vulnerabilidades em imagens Docker. Escolha o fluxo de trabalho que melhor atende às suas necessidades: use a CLI ou importe imagens Docker diretamente do Docker Hub para monitorá-las em busca de vulnerabilidades de segurança.
Meu colega Eric Smalling escreveu um guia detalhado de práticas recomendadas sobre fluxos de trabalho orientados por desenvolvedores: análise de Dockerfiles e imagens, priorização e correção, caso você queira se aprofundar no assunto.Não deixe de conferir também a Snyk GitHub Action, que você pode usar no ecossistema do GitHub Actions para detectar vulnerabilidades de segurança em bibliotecas de código aberto e imagens de contêiner.
Aprofunde-se
Para conhecer mais práticas recomendadas para criar imagens Docker, sugiro estes conteúdos:
Se você ainda não leu o artigo anterior e quer publicar imagens Docker no GitHub Packages, confira como publicar imagens Docker do Node.js no registro do GitHub Packages usando o GitHub Actions.
Segurança de contêineres que prioriza os desenvolvedores
O Snyk encontra e corrige automaticamente vulnerabilidades em imagens de contêiner e workloads do Kubernetes.