Subindo imagens docker pro dockerhub
Já achou mágico aquelas imagens pros containers docker que qualquer um pode usar e já pensou em fazer uma mas não sabe como? Vem que eu te ensino 😉
Pra começar você vai precisar de uma conta no Docker Hub é lá que todas todas as imagens para containers Docker vivem. Depois de criar sua continha lá, podemos passar para linha de comando e começar a usar a CLI do Docker.
Antes de fazer qualquer coisa precisamos de um projeto certo? O projeto que vamos usar aqui está neste repositório do GitHub. Ele consiste apenas em um script Python que faz a soma de dois números recebidos na linha de comando.
Agora que temos um projeto vamos começar pelo login, embora você não precise fazer login para fazer o build das suas imagens, uma vez feito o login você pode esquecer que ele existe:
Agora vamos fazer o build da nossa imagem:
Aqui usamos o parâmetro -t
para dar nome à nossa imagem. Depois de fazer o build podemos conferir a imagem na nossa lista de imagens disponíveis localmente:
Agora que temos uma imagem pronta, vamos dar uma tag para ela e conferir se ela foi taggeada corretamente:
Basicamente é esse passo que nos permite divulgar nossas imagens. Então depois de dar uma tag para sua imagem. Chegou a hora de fazer o push (envio da imagem para o Docker Hub):
e pronto. Agora a imagem foi enviada para o Docker Hub, tornando possível qualquer pessoa usar o docker pull
para baixar a e usar a imagem:
Algo extra
Ficar fazendo esses passos todos na mão pode ser cansativo se você precisar subir muitas imagens e além disso, tudo que fazemos a mão pode estar propenso a erros. Então o caminho natural seria automatizar essas tarefas.
Existem várias formas de fazer isso, mas vamos aqui usar um script shell que chamei de push.sh
para isso:
#!/bin/bash
if [ -z ${DOCKER_USERNAME} ]; then
echo "Missing DOCKER_USERNAME variable!"
exit 1
fi
error() {
if [ $? != 0 ]; then
echo "Error!"
exit 122
fi
}
build() {
echo "=> Building ${1}"
docker build -t ${1} .
echo "=> Built ${1}"
}
tag() {
echo "=> Tagging ${1}"
docker tag ${1} $(echo $DOCKER_USERNAME)/${1}
echo "=> Tagged ${1}"
}
push() {
echo "=> Pushing ${1}"
docker push $(echo $DOCKER_USERNAME)/${1}
echo "=> Pushed ${1}"
}
build ${1}
error
tag ${1}
error
push ${1}
error
echo
exit 0
Nele reproduzi todos os passos que fizemos até aqui e para usar basta fazer:
Você pode ainda colocar esse script em uma ferramenta de entrega contínua e deixar a mágica acontecer.
Links
Os códigos e passos demonstrados aqui estão neste repositório do GitHub passa lá pra deixar uma ⭐️