“cachalote negro” por Sho Hatakeyama en Unsplash
Desde la llegada de Docker, rara vez me encuentro instalando software de desarrollo directamente en mi máquina local. Ya sean servidores de bases de datos (p. ej., Postgres), sistemas de almacenamiento en caché (p. ej., Redis, Memcache) o sistemas de mensajería (p. ej., Kafka), casi siempre trato de encontrar o crear una imagen acoplable adecuada para usar durante el desarrollo.
La instalación del software es difícil. Y no tiene nada que ver con tu experiencia como desarrollador. Todos hemos visto una buena cantidad de conflictos de versiones, mensajes esotéricos de fallas de compilación y errores de dependencia faltantes cada vez que nos embarcamos en la tarea de instalar un nuevo software para usar. Hemos pasado innumerables horas copiando y pegando fragmentos de código de Stack Overflow en nuestro terminal y ejecutándolos con la esperanza de que uno de ellos resuelva mágicamente los problemas de instalación y haga que el software se ejecute. El resultado es principalmente desesperación, frustración y pérdida de productividad.
Docker proporciona una salida a este lío al reducir la tarea de instalar y ejecutar software a tan solo dos comandos ( docker run y docker pull ). En esta publicación, veremos este proceso en acción al observar paso a paso lo fácil y simple que es configurar una instalación de Postgres con Docker.
Tenga en cuenta que este no es un tutorial sobre Docker. Si tiene curiosidad sobre el funcionamiento interno de Docker y todo lo que puede hacer con él, lo animo a navegar por la web, ya que hay mucho material de calidad sobre el tema.
Esta publicación asume que tiene una cuenta docker válida y un demonio docker ejecutándose. Si es completamente nuevo en Docker, le recomendaría comenzar aquí .
Para desplegar una imagen para la última versión estable de Postgres, simplemente ejecute
docker pull postgres
Esto desplegará la imagen de Postgres de la versión estable más reciente del repositorio oficial del concentrador acoplable de Postgres. Para desplegar una versión que no sea la última versión estable, podemos proporcionar un nombre de etiqueta de imagen apropiado para el comando docker pull anterior
docker pull postgres:[tag_you_want]
Si queremos conservar los datos generados por la instancia de Postgres que se ejecuta dentro de un contenedor más allá del ciclo de vida del contenedor, debemos asignar un punto de montaje local como un volumen de datos a una ruta adecuada dentro del contenedor. Por lo general, creo una carpeta de volúmenes (podemos darle a la carpeta el nombre que queramos) en mi directorio de inicio y luego creo subcarpetas para cada una de las aplicaciones para las que necesito crear puntos de montaje de volumen de datos.
mkdir -p $HOME/docker/volumes/postgres
Iniciar el contenedor de Postgres es tan simple como ejecutar el comando docker run
docker run --rm --name pg-docker -e POSTGRES_PASSWORD=docker -d -p 5432:5432 -v $HOME/docker/volumes/postgres:/var/lib/postgresql/data postgres
Hemos proporcionado varias opciones para el comando de ejecución de la ventana acoplable :
Una vez que el contenedor está funcionando, conectarse a él desde una aplicación no es diferente a conectarse a una instancia de Postgres que se ejecuta fuera de un contenedor docker. Por ejemplo, para conectarnos usando psql podemos ejecutar
psql -h localhost -U postgres -d postgres
Con suerte, esta publicación ha demostrado lo fácil y sencillo que es comenzar a utilizar Postgres en Docker. Para la mayoría de las otras aplicaciones, el proceso es igual de simple. Entonces, la próxima vez que necesite instalar una pieza de software, piense en docker pull antes de llegar a brew install, yum install, apt-get install o cualquiera que sea el comando para el administrador de paquetes de su sistema :)