Closed github-learning-lab[bot] closed 5 years ago
¡Muy bien!
Ahora vamos a hacer cambios para que nuestero servicio de Postgres lo podamos acceder desde localhost, para conectarnos con nuestros IDE's (¿recuerdan que yo uso Valentina Studio?).
Para éso, agrega la llave ports
para conectar nuestro puerto local 5432
(HOST
) al puerto de postgres (CONTAINER
), y poder verlo con nuestro IDE (Valentina Studio, etc)
Cuando lo hayas agregado, corre los siguientes comandos:
docker-compose down
para parar y eliminar todos los contenedores del stack, junto con sus configuraciones anteriores
docker-compose up
para volver a levantar los servicios del stack. Ahora, nuestro servicio de Postgres estará disponible en localhost:5432
Sí, no tenemos password aún. Para éso, necesitaremos agregar variables de entorno a nuestro servicio, que haremos en el siguiente paso. Responde con el comentario: "¿Qué pasó con el password?" para continuar.
¿Qué pasó con el password?
¡OK! Vamos a agregar ése password para acceder al servicio de Postgres.
Según la documentación de la imagen oficial de Postgres, existen varias variables de entorno que permiten configurar el usuario inicial, el password del usuario inicial, el nombre de la base de datos inicial, las opciones de arranque del servicio y de la locación del directorio donde se almacenan los datos.
Busquen "Environment Variables" en la documentación de la imagen oficial de Postgres, para ver qué variable de entorno necesitamos agregar para configurar el password del usuario inicial.
Cuando sepamos qué variable de entorno utilizar, agreguemos la llave environment
al servicio de postgres
, y después agreguemos la variable de entorno para hacer que 3x4mpl3P455
sea el password del usuario inicial.
Cuando lo hayas agregado, corre los siguientes comandos:
docker-compose down
para borrar de nuevo el contenedor del servicio de postgres
, ya que éste se creó sin password en el paso anterior.
docker-compose up
para volver a levantar los servicios del stack. Ahora, podremos acceder al servicio en localhost:5432
con el usuario postgres
y el password 3x4mpl3P455
.
Si seguimos repitiendo los comandos docker-compose down
y docker-compose up
, van a notar que la base de datos se está eliminando constantemente... porque nos falta persistir los datos en un volúmen - tal como lo vimos el martes con docker
. Es hora de saber configurar lo mismo, pero con docker-compose
.
Responde "¿Cómo guardo los datos en un volúmen?" en éste Issue para continuar.
¿Cómo guardo los datos en un volúmen?
¡Ya es el último!
En éste paso daremos de alta un volúmen en donde puedan guardarse los datos del servicio de postgres, y cómo montarlo en los contenedores de ése servicion.
Para dar de alta volúmenes con su configuración, es necesario agregar la llave volumes
en la raíz del documento - éso es, al mismo nivel que services
:
version: "3.7"
volumes:
my_volume_name:
services:
postgres:
# ...
El nombre de volume deberá ser postgres_data
. No nos meteremos con configuraciones adicionales - como drivers, etc. Lo podemos dejar así tal y como lo mostramos en el ejemplo anterior... ¡Pero sí cambien el nombre!
Ahora, vamos a configurar el servicio de postgres
para que utilice ése volúmen
para guardar los datos: Agreguemos la llave volumes
al servicio de postgres
- ojo: ésta configuración es una lista de valores.
De la documentación de la imagen oficial de Postgres, necesitamos saber en dónde se guardan los datos por default. Busquen "Where to Store Data" y tomen nota del directorio.
Agreguemos a la lista de volúmenes el siguiente mapeo:
postgres_data:/path/to/where/postgres/stores/data
(¡cambien el path!). Con
ésto, estaremos haciendo que el directorio donde se guarda la data en realidad
es un volúmen de Docker para guardar la info.
Cuando hayas terminado de agregar los cambios, repetiremos el ciclo de los pasos anteriores:
docker-compose down
para borrar una vez más el contenedor del servicio de
postgres
, ya que éste se creó sin usar el volúmen en el paso anterior.
docker-compose up
para volver a levantar los servicios del stack. Ahora,
podremos agregar y guardar datos, volver a repetir docker-compose down
para
eliminar el contenedor de postgres
, pero ésta vez sin perder los datos.
Si todo funcionó, debes guardar los cambios en Github para continuar:
git add docker-compose.yml
git commit -m "Agrega la base de datos de postgresql"
git push origin master
¡Bien!
Ahora, haz click aquí para aprender cómo hacer una imagen para la app.
Ahora nos toca agregar un servicio de bases de datos al stack. Usaremos PostgreSQL en éste curso.
Empezemos por crear un archivo llamado
docker-compose.yml
en la raíz del proyecto - observen que éste fragmento de código ya define un volúmen para los datos de la DB:Utilizaremos la imagen oficial de Postgres para iniciar los contenedores de éste servicio. Les recomiendo usar la version
postgres:11-alpine
, ya que es una imagen muy pequeña, y se descarga muy rápido.Para decirle a
docker-compose
que utilice ésta imagen como base, debemos agregar la llaveimage
, con el nombre de la imagen que queremos usar.Una vez que tengan hayan hecho éstos cambios, podremos levantar podremos iniciar el servicio con el siguiente comando:
Cuando vean que se disparan un montón de mensajes de log, es hora de responder "OK!" en éste Issue, para recibir la siguiente indicación :)