Configurar Docker Compose (PostgreSQL + Volúmenes + .env)
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.