paint-brush
No instale Postgres. Docker tire de Postgrespor@skabbass1
210,182 lecturas
210,182 lecturas

No instale Postgres. Docker tire de Postgres

por Syed2018/09/04
Read on Terminal Reader
Read this story w/o Javascript

Demasiado Largo; Para Leer

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.

Company Mentioned

Mention Thumbnail
featured image - No instale Postgres. Docker tire de Postgres
Syed HackerNoon profile picture

“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í .

Obtener la imagen de Docker de Postgres

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]

Cree un directorio para que sirva como el punto de montaje del host local para los archivos de datos de Postgres

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

Ejecute el contenedor de 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 :

  • — rm : elimina automáticamente el contenedor y su sistema de archivos asociado al salir. En general, si estamos ejecutando muchos contenedores a corto plazo, es una buena práctica pasar el indicador rm al comando docker run para una limpieza automática y evitar problemas de espacio en disco. Siempre podemos usar la opción v (que se describe a continuación) para conservar los datos más allá del ciclo de vida de un contenedor.
  • — nombre: Nombre identificativo del contenedor. Podemos elegir cualquier nombre que queramos. Tenga en cuenta que dos contenedores existentes (incluso si están detenidos) no pueden tener el mismo nombre. Para reutilizar un nombre, debe pasar el indicador rm al comando docker run o eliminar explícitamente el contenedor mediante el comando docker rm [nombre del contenedor].
  • -e: Expone la variable de entorno de nombre POSTGRES_PASSWORD con valor docker al contenedor. Esta variable de entorno establece la contraseña de superusuario para PostgreSQL. Podemos establecer POSTGRES_PASSWORD en lo que queramos. Simplemente elijo que sea docker para demostración. Hay variables de entorno adicionales que puede configurar. Estos incluyen POSTGRES_USER y POSTGRES_DB. POSTGRES_USER establece el nombre de superusuario. Si no se proporciona, el nombre de superusuario por defecto es postgres. POSTGRES_DB establece el nombre de la base de datos predeterminada para configurar. Si no se proporciona, el valor predeterminado es POSTGRES_USER.
  • -d: lanza el contenedor en modo separado o, en otras palabras, en segundo plano.
  • -p : vincula el puerto 5432 en localhost al puerto 5432 dentro del contenedor. Esta opción permite que las aplicaciones que se ejecutan fuera del contenedor puedan conectarse al servidor de Postgres que se ejecuta dentro del contenedor.
  • -v : monte $HOME/docker/volumes/postgres en la máquina host en la ruta del volumen del lado del contenedor /var/lib/postgresql/data creado dentro del contenedor. Esto garantiza que los datos de Postgres persistan incluso después de que se elimine el contenedor.

Conéctese a PostgreSQL

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 :)