zodiak2290 / docker-dotnet-lab-exercises

The template repository for the Docker .NET Lab course on Learning Lab.
https://lab.github.com/vovimayhem/docker-.net-lab
0 stars 0 forks source link

Agregar el servicio de la base de datos #2

Open github-learning-lab[bot] opened 5 years ago

github-learning-lab[bot] commented 5 years ago

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:

version: "3.7"

services:
  postgres:
    # Aquí estaremos agregando las configuración del servicio de postgres

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 llave image, 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:

docker-compose up

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

zodiak2290 commented 5 years ago

OK!

github-learning-lab[bot] commented 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:

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.

zodiak2290 commented 5 years ago

¿Qué pasó con el password?

github-learning-lab[bot] commented 5 years ago

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

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.

zodiak2290 commented 5 years ago

¿Cómo guardo los datos en un volúmen?

github-learning-lab[bot] commented 5 years ago

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

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