Para ver la versión del Docker instalado
$ docker -v
version 24.0.2 , build cb74dfc
$ docker - compose -v
Docker Compose version v2 .19.1
Cómo levantar un contenedor?
Tenemos que crear dos archivos, primero es el Dockerfile con el siguiente contenido:
FROM postgres:14.1-alpine
LABEL author="BDD-Fiuba"
LABEL description="Postgres Image for BDD-FIUBA"
LABEL version="1.0"
COPY *.sql /docker-entrypoint-initdb.d/
El segundo es el [Link] con el siguiente contenido:
version: '3.9'
services:
# Servicio para PostgreSQL
postgres:
build:
context: .
dockerfile: Dockerfile
image: postgres:14
container_name: bdd_postgres_db
restart: always
environment:
POSTGRES_DB: bdd_db
POSTGRES_USER: admin
POSTGRES_PASSWORD: admin123
ports:
- "5434:5432"
volumes:
- ./data/postgres:/var/lib/postgresql/data
# Servicio para PgAdmin
pgadmin:
image: dpage/pgadmin4:7.5
container_name: bdd_pg_admin
restart: always
environment:
PGADMIN_DEFAULT_EMAIL: admin@[Link]
PGADMIN_DEFAULT_PASSWORD: admin123
ports:
- "5050:80"
Estos dos archivos nos van a permitir descargar la imagen de PostgresSQL que posee el
motor de base de datos y adem´as pgadmin para poder administrar la base de datos.
Comandos para iniciar los contenedores
Ejecutando el siguente comando para poder crear los containers de estos dos servicios:
$ docker-compose up -d
Si queremos apagar los containers:
$ docker-compose down
Tenemos otro comando util de docker, para listar todos los containers que tenemos
corriendo y su informacion:
$ docker ps -a
1. Creación de los archivos de configuración
Asegúrate de tener los siguientes archivos en tu directorio de trabajo:
[Link] : Este archivo contiene la configuración de tus servicios.
Dockerfile : Este archivo contiene las instrucciones para construir la imagen de
PostgreSQL si es necesario.
Archivos SQL (por ejemplo, [Link] ): Estos archivos contienen scripts SQL que
quieres ejecutar al inicializar la base de datos.
2. Ejecución de Docker Compose
Ejecuta el siguiente comando en tu terminal para iniciar los servicios definidos en tu archivo
[Link] :
docker-compose up -d
El flag -d ejecuta los contenedores en segundo plano.
3. Acceso a PostgreSQL
Una vez que los contenedores estén en ejecución, puedes acceder a PostgreSQL dentro del
contenedor siguiendo estos pasos:
a. Acceso al contenedor de PostgreSQL
docker exec -it bdd_postgres_db bash
Este comando te llevará al interior del contenedor de PostgreSQL.
b. Conexión a PostgreSQL mediante
psql Dentro del contenedor, puedes utilizar el cliente psql` para conectarte a
PostgreSQL. Ejecuta el siguiente comando:
psql -U admin -d bdd_db
Este comando te conectará a la base de datos bdd_db utilizando el usuario admin .
También puedes omitir -d bdd_db y conectar automáticamente a la base de datos
especificada en la variable de entorno POSTGRES_DB .
Acceso a PgAdmin
Inicio en la aplicación de PgAdmin y creo un server con los datos que puse en los archivos
de creación
Crear una base de datos
puedo hacerlo desde la interfaz haciendo click derecho sobre Database y creando una
database o puedo hacerlo con la consola con
psql -h localhost -p nro_host -U admin nombre_DB
cuando esté en consola dentro de mi base de datos ejecuto \l y voy a tener la lista de la
base de datos
Con \dt voy a tener una lista de las tablas que tenemos.
Crear una tabla
Tengo que ir a Schemas-public darle click derecho y query tool
Para crear tablas voy a definir de la siguiente manera
-- Crear tabla football_stats
CREATE TABLE football_stats (
team VARCHAR(100) PRIMARY KEY,
players_used INTEGER,
avg_age DECIMAL(5,2),
possession DECIMAL(5,2),
games INTEGER,
goals INTEGER,
assists INTEGER,
cards_yellow INTEGER,
cards_red INTEGER
);
Para ver todas las tablas ejecuto select * from football_stats;
si toco \x tengo otra forma de visualizar las cosas
Cargar cosas a la base de docker
docker cp "ubicación de archivo" "nombre_container_docker:/"
para saber el nombre_container_docker lo veo en el archivo [Link].
Entrar en mi docker por consola
docker exec -ti "nombre_BD_docker" bash
Insertar cosas a mi base de datos
-- forma manual de insertar las cosas
INSERT INTO football_stats (team, players_used, avg_age, possession,
games, goals, assists, cards_yellow, cards_red)
VALUES
('ARGENTINA', 24, 28.4, 57.4, 7, 15, 8, 17, 0),
('AUSTRALIA', 20, 28.7, 37.8, 4, 3, 3, 7, 0),
('BELGIUM', 20, 30.6, 57.0, 3, 1, 1, 5, 0);
-- Si quiero importar desde un [Link] (en este caso
football_stats.csv)
COPY football_stats
FROM '/[Link]'
DELIMITER ';'
CSV HEADER -- para que tome la primera fila como header
ENCODING 'UTF-8'; -- para que tome la codificación correcta
Si quiero dropear las tablas
-- Eliminar tabla si existe
DROP TABLE IF EXISTS football_stats;
DROP TABLE IF EXISTS matches;
Para exportar y para restaurar
-- export
pg_dump -F mundial > [Link]
pg_dump -F mundial > [Link]
-- restore
pg_restore -F mundial > [Link]
pg_restore -F mundial > [Link]
Delete
Si quiero eliminar todo el contenido de alguna tabla puedo ejecutar
delete from teams;
Si quiero eliminar solo algunas filas hago:
delete from teams where team = 'ARGENTINA'