00:00 / 00:00

Fecha publicación: 16 abr 2021

Introducción

Una de las características de las que te puedes aprovechar si usas Github como repositorio de código fuente es la posibilidad de poder almacenar imágenes Docker tanto para exponerlo en la comunidad como usarlo en tus flujos de Github Actions.

En este vídeo veremos cómo subir tus imágenes de Docker a Github Packages.

Docker + Github Packages

Lo primero que vamos a necesitar, es crear un PAT (Personal Access Token) para poder tener acceso a este apartado. Para ello, debemos ir a Settings > Developer settings > Personal access tokens.

Panel para crear Personal Access Tokens

Éste debe tener un nombre y elegir cuales son los scopes que necesitamos para este PAT, que vamos a utilizar con Github Packages. En este caso, únicamente necesitamos el de escritura de paquetes, el cuál habilita también la lectura y todos los permisos sobre el repositorio.

Crear Personal Access Tokens

Además, podemos también habilitar la opción de eliminar paquetes por si en un futuro queremos eliminarlos.

Habilitar permiso para eliminar paquetes

Una vez que ya tenemos los scopes y el nombre, lo único que nos queda por hacer es generarlo, pulsando el botón Generate token que está en la parte inferior.

Después de crearlo, antes de salir de la pantalla, no podemos olvidar copiar el PAT que acabamos de crear. Ya que no podremos volver a verlo y tendríamos que generar uno nuevo en el caso de que olvidásemos hacer este paso.

Para poder subir nuestra imagen a nuestro repositorio en Github, lo primero que tenemos que hacer es iniciar sesión en Github Packages. Para ello hemos creado el personal access token que lo vamos a almacenar en un archivo txt y que ahora vamos a utilizar para iniciar sesión con docker login.

Para ello, lo primero que vamos a hacer es ejecutar el comando cat para recuperar el contenido del fichero en el terminal

cat PAT.txt

Y con el operador | (pipeline), encadenamos el siguiente comando docker login para iniciar sesion en Github Packages

cat PAT.txt | docker login docker.pkg.github.com

Debemos indicarle cuál es el nombre de usuario de la cuenta de Github:

cat PAT.txt | docker login docker.pkg.github.com -u <nombre-usuario>

Y por último, le vamos a decir que queremos utilizar la password que hemos recuperado con el comando cat:

cat PAT.txt | docker login docker.pkg.github.com -u <nombre-usuario> --password-stdin

Al lanzar este comando, lo que va a ocurrir es que vamos a iniciar sesión correctamente en Github Packages y ahora podemos crear una imagen de Docker, para posteriormente publicarla en nuestro repositorio.

Para generarla, utilizamos el comando:

docker build

Sin embargo, tenemos que tener en cuenta que cuando establezcamos el nombre de esta imagen a través de -t, debemos seguir la nomenclatura que nos pide Github Packages. En este caso, tendríamos que poner primero la URL del registro:

docker build -t docker.pkg.github.com

Seguido del nombre de usuario donde está el repositorio:

docker build -t docker.pkg.github.com/<nombre-usuario>

Después tendríamos que indicar el nombre del repositorio:

docker build -t docker.pkg.github.com/<nombre-usuario>/<nombre-repositorio>

Y por último, el nombre que le queremos dar a la imagen:

docker build -t docker.pkg.github.com/<nombre-usuario>/<nombre-repositorio>/<nombre-imagen>

También si queremos, podemos establecer una versión para la misma o dejar que genere la de por defecto, que es latest. En este caso, vamos a poner v1:

docker build -t docker.pkg.github.com/<nombre-usuario>/<nombre-repositorio>/<nombre-imagen>:v1

Por último, como tenemos que especificar a docker build cuál es el contexto sobre el cuál va a generar esta imagen. Vamos a elegir . porque ya estamos en el directorio raiz donde queremos que se ejecuten todos los comandos del Dockerfile.

Al ejecutar el comando, hará que se genere la imagen en local.

El siguiente paso, será publicarla en el repositorio de Github. Para ello usamos el comando docker push y el nombre de la imagen:

docker push docker.pkg.github.com/<nombre-usuario>/<nombre-repositorio>/<nombre-imagen>:v1

En este momento, lo que va a ocurrir es que se va a publicar nuestra imagen en Github Packages y será asociada al repositorio.

Ahora que ya hemos publicado la imagen desde Visual Studio Code a Github Packages, podemos ver ésta misma en el apartado packages del repositorio.

Apartado packages del repositorio Github

Si hacemos click en el paquete, veremos que aparece las instrucciones que necesitamos para utilizar la imagen tanto en un proceso de pull como si quisiéramos utilizar esta imagen como imagen base de otras imágenes que podamos crear en el futuro.

También aparece un apartado de actividad, donde podemos ver cuántas descargas ha tenido en los últimos 30 días, la última semana e incluso en el día de hoy. Y las versiones más recientes que tiene de la misma.

¿Te gusta el mundo Devops?

En Lemoncode impartimos un Bootcamp Devops Online, en él encontrarás todos los recursos necesarios: clases de los mejores profesionales del sector, tutorías en cuanto las necesites y ejercicios para desarrollar lo aprendido en los distintos módulos. Si quieres saber más puedes pinchar aquí para más información sobre este Bootcamp Devops.