Docker Init

Libro Docker

Una de las nuevas funcionalidades de la versión recién lanzada de Docker Desktop, 4.19.0, es la adición de un nuevo plugin llamado init.

Este plugin, aunque muy sencillo, es muy útil a la hora de arrancar un proyecto nuevo, ya que nos permite crear de forma muy rápida los tres ficheros básicos de Docker que son usado comúnmente en cualquier proyecto que, obviamente, use Docker. Estos ficheros son:

  • .dockerignore
  • Dockerfile
  • compose.yaml

Si no conoces la función de cada uno de esos ficheros o el formato y contenido de los mismos, te recomiendo este magnífico libro dónde te lo explica de todo a base de muchos ejemplos ;) o simplemente le puedes preguntar a ChatGPT! :)

El uso de este plugin es muy sencillo, sólo tienes ejecutar el comando docker init y contestar a varias preguntas, estas se diferenciarán dependiendo del lenguaje de programación seleccionado:

$ docker init

Welcome to the Docker Init CLI!

This utility will walk you through creating the following files with sensible defaults for your project:
  - .dockerignore
  - Dockerfile
  - compose.yaml

Let's get started!

? What application platform does your project use?  [Use arrows to move, type to filter]
  Go - suitable for a Go server application
  Python - suitable for a Python server application
  Node - suitable for a Node server application
> Other - general purpose starting point for containerizing your application
  Don't see something you need? Let us know!
  Quit

Lo primero que tenemos que contestar es para qué lenguaje queremos crear los ficheros de Docker. Dependiendo del lenguaje, se usan distintas imágenes, administrador de paquetes, directorios y/o ficheros que queremos ignorar, etc.

Supongamos que seleccionamos la opción Python, la siguiente pregunta sería qué versión de Python queremos usar:

$ docker init

Welcome to the Docker Init CLI!

This utility will walk you through creating the following files with sensible defaults for your project:
  - .dockerignore
  - Dockerfile
  - compose.yaml

Let's get started!

? What application platform does your project use? Python
? What version of Python do you want to use? (3.10.9)

Una vez introducida la versión, nos preguntará por el puerto por el cual nuestra aplicación escuchará, y finalmente nos pregunta por el comando que queremos ejecutar para levantar nuestra aplicación:

$ docker init

Welcome to the Docker Init CLI!

This utility will walk you through creating the following files with sensible defaults for your project:
  - .dockerignore
  - Dockerfile
  - compose.yaml

Let's get started!

? What application platform does your project use? Python
? What version of Python do you want to use? 3.10.9
? What port do you want your app to listen on? 8000
? What is the command to run your app (e.g., gunicorn 'myapp.example:app' --bind=0.0.0.0:8000)? gunicorn 'myapp.example:app' --bind=0.0.0.0:8000

CREATED: .dockerignore
CREATED: Dockerfile
CREATED: compose.yaml

✔ Your Docker files are ready!

Take a moment to review them and tailor them to your application.

WARNING: No requirements.txt file found. Be sure to create one that contains the dependencies for your application, including an entry for the gunicorn package, before running your application.

When you're ready, start your application by running: docker compose up --build

Your application will be available at http://localhost:8000

Una vez terminado, nos encontraremos en el directorio actual con los 3 ficheros mencionados anteriormente.

Es muy probable que tengas que hacer algunas modificaciones en dichos ficheros, sobre todo en entornos empresariales, ya que es común y muy recomendado, que dentro de la empresa existan imágenes base de Docker configuradas y mantenidas internamente, y almacenadas en resgistros internos.

Una cosa muy imoportanta a tener en cuenta es que si ejecutas este plugin en un directorio donde ya tienes dichos ficheros, estos se sobreescribirán, aunque el plugin te preguntará si quieres sobreescribirlos.