Configurar Docker Compose (PostgreSQL + Volúmenes + .env)

by ADMIN 58 views

Introducción

En este artículo, exploraremos la configuración de Docker Compose para levantar un servicio PostgreSQL con datos persistentes y configuración mediante variables de entorno en un archivo .env. Docker Compose es una herramienta de línea de comandos que permite definir y ejecutar aplicaciones de contenedores de Docker de manera sencilla y eficiente.

Requisitos previos

Antes de comenzar, asegúrese de tener instalado Docker y Docker Compose en su sistema. Puede verificar la instalación ejecutando los siguientes comandos en la terminal:

docker --version
docker-compose --version

Crear el archivo docker-compose.yml

El archivo docker-compose.yml es el corazón de la configuración de Docker Compose. En este archivo, definimos los servicios que deseamos levantar, incluyendo el servicio PostgreSQL. A continuación, se muestra un ejemplo de cómo configurar el archivo docker-compose.yml para levantar un servicio PostgreSQL:

version: '3'
services:
  postgres:
    image: postgres
    environment:
      - POSTGRES_USER=${POSTGRES_USER}
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
      - POSTGRES_DB=${POSTGRES_DB}
    volumes:
      - ./data:/var/lib/postgresql/data
    ports:
      - "5432:5432"

En este ejemplo, definimos un servicio llamado postgres que utiliza la imagen oficial de PostgreSQL. Configuramos las variables de entorno POSTGRES_USER, POSTGRES_PASSWORD y POSTGRES_DB utilizando el archivo .env. También definimos un volumen que mapea el directorio de datos de PostgreSQL (/var/lib/postgresql/data) para persistencia. Finalmente, configuramos el puerto 5432 para que el servicio PostgreSQL esté disponible desde el exterior.

Crear el archivo .env

El archivo .env es donde configuramos las variables de entorno que utilizará el servicio PostgreSQL. A continuación, se muestra un ejemplo de cómo configurar el archivo .env:

POSTGRES_USER=myuser
POSTGRES_PASSWORD=mypassword
POSTGRES_DB=mydb

En este ejemplo, configuramos las variables de entorno POSTGRES_USER, POSTGRES_PASSWORD y POSTGRES_DB con valores de ejemplo.

Iniciar el contenedor con docker-compose up -d

Una vez que hayamos configurado el archivo docker-compose.yml y el archivo .env, podemos iniciar el contenedor con el comando docker-compose up -d. Este comando levanta el contenedor en segundo plano y lo deja en ejecución.

docker-compose up -d

Conectar a la base de datos

Una vez que el contenedor esté en ejecución, podemos conectar a la base de datos utilizando el comando psql. A continuación, se muestra un ejemplo de cómo conectar a la base de datos:

psql -h localhost -p 5432 -U myuser mydb

En este ejemplo, conectamos a la base de datos mydb utilizando el usuario myuser y la contraseña mypassword.

ConclusiónEn este artículo, exploramos la configuración de Docker Compose para levantar un servicio PostgreSQL con datos persistentes y configuración mediante variables de entorno en un archivo .env. Aprendimos a crear el archivo docker-compose.yml y el archivo .env, y a iniciar el contenedor con docker-compose up -d. También aprendimos a conectar a la base de datos utilizando el comando psql. Esperamos que esta guía haya sido útil para usted.

¿Qué es Docker Compose?

Docker Compose es una herramienta de línea de comandos que permite definir y ejecutar aplicaciones de contenedores de Docker de manera sencilla y eficiente. Con Docker Compose, puedes definir un archivo docker-compose.yml que describe los servicios que deseas levantar, incluyendo el servicio PostgreSQL, y luego ejecutar el comando docker-compose up para levantar los contenedores.

¿Qué es un volumen en Docker?

Un volumen en Docker es un directorio en el sistema de archivos del host que se mapea a un directorio dentro de un contenedor. Los volúmenes permiten que los datos de un contenedor sean persistentes, es decir, que no se pierdan cuando el contenedor se detiene o se elimina.

¿Por qué es importante configurar variables de entorno en el archivo .env?

Las variables de entorno en el archivo .env permiten que los valores de configuración de un servicio sean separados de la configuración del contenedor. De esta manera, puedes cambiar los valores de configuración sin tener que modificar el archivo docker-compose.yml.

¿Cómo puedo conectar a la base de datos desde fuera del contenedor?

Puedes conectar a la base de datos desde fuera del contenedor utilizando el comando psql y especificando la dirección IP del contenedor y el puerto en el que se está ejecutando el servicio PostgreSQL.

¿Qué pasa si el contenedor se detiene o se elimina?

Si el contenedor se detiene o se elimina, los datos persistentes en el volumen no se pierden. Sin embargo, es importante tener en cuenta que si el contenedor se elimina, el volumen también se eliminará, a menos que hayas configurado un volumen persistente.

¿Cómo puedo asegurarme de que el contenedor se ejecute correctamente?

Puedes asegurarte de que el contenedor se ejecute correctamente ejecutando el comando docker-compose up -d y luego verificando que el contenedor esté en ejecución utilizando el comando docker ps.

¿Qué es un servicio en Docker Compose?

Un servicio en Docker Compose es una unidad de ejecución que se define en el archivo docker-compose.yml. Un servicio puede ser un contenedor, un grupo de contenedores o una aplicación que se ejecuta en un contenedor.

¿Cómo puedo configurar un servicio en Docker Compose?

Puedes configurar un servicio en Docker Compose definiendo un bloque services en el archivo docker-compose.yml y especificando las propiedades del servicio, como la imagen, el puerto y las variables de entorno.

¿Qué es un puerto en Docker Compose?

Un puerto en Docker Compose es un número de puerto que se asigna a un servicio para que pueda ser accedido desde fuera del contenedor. Los puertos permiten que los servicios se comuniquen entre sí y con el exterior.

¿Cómo puedo asegurarme de que los servicios se comuniquen correctamente?

Puedes asegurarte de que los servicios se comuniquen correctamente configurando los puertos y variables de entorno de manera adecuada en el archivo docker-compose.yml.

¿Qué es un volumen persistente en Docker Compose?

Un volumen persistente en Docker Compose es un volumen que se mantiene incluso después de que el contenedor se elimina. Los volúmenes persistentes permiten que los datos de un contenedor sean persistentes y no se pierdan cuando el contenedor se elimina.

¿Cómo puedo configurar un volumen persistente en Docker Compose?

Puedes configurar un volumen persistente en Docker Compose especificando la propiedad volumes en el bloque services del archivo docker-compose.yml y utilizando la sintaxis ./data:/var/lib/postgresql/data para mapear el directorio de datos del contenedor al directorio del host.