Skip to content

Commit bae5709

Browse files
v1.0
0 parents  commit bae5709

File tree

4 files changed

+193
-0
lines changed

4 files changed

+193
-0
lines changed

Dockerfile

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# Utilizar la imagen oficial de PostgreSQL
2+
FROM postgres:latest
3+
4+
# Copiar el script SQL al contenedor
5+
COPY ./init.sql /docker-entrypoint-initdb.d/
6+
7+
# Configurar variables de entorno
8+
ENV POSTGRES_PASSWORD=ABD
9+
10+
# Jesús Gómez - jesus.gomeztocino@alum.uca.es

README.md

Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
# Guía de instalación y mantenimiento de las herramientas para la asignatura Administración de Bases Datos.
2+
3+
## Tecnologías a usar
4+
5+
1. **PostgreSQL**: Sistema de gestión de bases de datos relacional objeto (ORDBMS) de código abierto. Ddestaca por su robustez, escalabilidad y capacidad para manejar grandes volúmenes de datos. Ofrece una amplia variedad de tipos de datos, como JSON y XML, y cuenta con extensibilidad para definir tipos y funciones propias. Además, PostgreSQL es conocido por su conformidad con los estándares SQL y su flexibilidad para manejar transacciones, vistas y procedimientos almacenados.
6+
2. **Docker**: Plataforma de contenedores (virtualización a nivel de S.O) de código abierto que permite desarrollar, enviar y ejecutar aplicaciones en un entorno aislado y seguro. Facilita la automatización del despliegue de aplicaciones dentro de contenedores ligeros, los cuales son independientes del sistema operativo anfitrión. Esto permite un alto grado de portabilidad, eficiencia en el uso de recursos y facilidad de escalabilidad y orquestación.
7+
8+
## ¿Por qué Docker?
9+
10+
### Consistencia
11+
12+
Docker ofrece un ambiente de desarrollo unificado, eliminando así el problema de inconsistencias entre distintos sistemas operativos o dependencias necesarias.
13+
14+
### Eficiencia
15+
16+
A diferencia de las máquinas virtuales, Docker es más eficiente en el uso de recursos al compartir el sistema operativo del anfitrión.
17+
18+
### Portabilidad y automatización
19+
20+
Docker empaqueta la aplicación y sus dependencias en un solo contenedor, facilitando su despliegue en cualquier sistema con Docker instalado. Esto permite ahorrar al desarrollador el proceso de configuración de la tecnología en el sistema operativo elegido.
21+
22+
### Seguridad
23+
24+
Los servicios como _Docker Compose_ permiten aislar los datos del sistema, por lo que si surge algún fallo en el sistema del contenedor, bastaría con restablecer los ajustes predeterminados (destruir y reconstruir el contendor) sin perder información alguna.
25+
26+
## Contenido del directorio
27+
28+
### _Dockerfile_
29+
30+
En este archivo se especifica la imagen de la tecnología sobre la que trabajar. En este caso, se usará la imagen oficial de _PostgreSQL_ en su última versión, e implementado sobre Debian, para construir el contendor.
31+
32+
Este archivo también configura la contraseña de acceso a la base de datos, siendo por defecto 'ABD'.
33+
34+
### _docker-compose.yml_
35+
36+
Este archivo crea:
37+
38+
- Un volumen persistente para almacenar los datos de la base de datos. Esto resulta útil por si surgiera algún tipo de error en el contendor utilizado, permitiendo reconstruirlo y aplicar los ajustes predeterminados sin perder ningún dato.
39+
- Una carpeta compartida entre el contenedor y la máquina host, conveniente para crear los archivos SQL para cada ejercicio de la asignatura.
40+
41+
El nombre de la carpeta compartida es 'Ejercicios' y podrá encontrarla en el directorio 'DockerABD' al construir el contenedor (véase en el apartado 'Construcción y ejecución del contenedor').
42+
43+
Dicha carpeta compartida facilita el acceso a los archivos desde el S.O anfitrión y evita la pérdida de estos en el almacenamiento temporal que ofrece PostgreSQL por defecto.
44+
45+
Es altamente recomendable establecer un control de versiones para este directorio, usted podrá sacar un gran beneficio de usar este tipo de herramientas.
46+
47+
### _init.sql_
48+
49+
Este archivo SQL se copia, al construir el contenedor, al directorio de inicialización de PostgreSQL. Consúltelo para ver las tablas y registros añadidos.
50+
51+
## Construcción, ejecución y gestión del contenedor
52+
53+
### Requerimientos
54+
55+
**Es necesario instalar la herramienta Docker y descomprimir el archivo descargado antes de continuar con los siguientes apartados.**
56+
57+
Visite la página web de [Docker](https://docs.docker.com/get-docker/). Descargue e instale la herramienta para su sistema operativo.
58+
59+
### Construcción del contenedor
60+
61+
1. Abra la terminal de su S.O anfitrión.
62+
2. Sitúese dentro de la carpeta '_DockerABD_'.
63+
3. Ejecute el siguiente comando: `docker-compose build`. Esto construirá la imagen y creará el contendor y los volúmenes asociados.
64+
4. Ejecute el siguiente comando: `docker-compose up -d`. Esto iniciará, por primera vez, la ejecución los contenedores en segundo plano.
65+
66+
### Ejecución del contenedor
67+
68+
Siga estos pasos **únicamente** si ha realizado la construcción del contenedor e inicia el contenedor, al menos, por segunda vez.
69+
70+
1. Abra la terminal de su S.O anfitrión.
71+
2. Ejecute el siguiente comando: `docker start ABD`.
72+
73+
### Parar el contenedor
74+
75+
Siga estos pasos si necesita hacer alguna modificación sobre el contendor, o simplemente desea pararlo porque su ejecución no siga siendo necesaria.
76+
77+
1. Abra la terminal de su S.O anfitrión.
78+
2. Ejecute el siguiente comando: `docker stop ABD`.
79+
80+
### Restablecer el contedor
81+
82+
Siga estos pasos si encuentra algún problema a la hora de trabajar con el contenedor, ya que restablecer las configuraciones puede solucionar la mayoría de ellos.
83+
84+
**Este proceso**, aunque elimine y construya de nuevo el contenedor, **no borrará sus datos**, ya que se encuentran en un volumen aislado.
85+
86+
1. Abra la terminal de su S.O anfitrión.
87+
2. Sitúese dentro de la carpeta '_DockerABD_'.
88+
3. Ejecute el siguiente comando: `docker-compose restart`.
89+
90+
### Eliminar el contenedor
91+
92+
Siga estos pasos si ya no necesita disponer de estas herramientas (por ejemplo, porque haya usted aprobado la asignatura con buena nota 😎).
93+
94+
1. Abra la terminal de su S.O anfitrión.
95+
2. Sitúese dentro de la carpeta '_DockerABD_'.
96+
3. Ejecute el siguiente comando: `docker-compose down`.
97+
98+
Todavía sus datos no han sido eliminados. **Asegúrese de que no necesita cualquier información que estuviese en el contendor antes de continuar con el siguiente paso.**
99+
100+
4. Ejecute el siguiente comando: `docker volume rm dockerabd_postgres-data`.
101+
5. Ejecute el siguiente comando: `docker volume rmi imagenabd`.
102+
103+
## Acceso a la terminal del contedor
104+
105+
Siga estos pasos si necesita abrir una terminal sobre el contenedor:
106+
107+
1. Abra la terminal de su S.O anfitrión.
108+
2. Ejecute el siguiente comando: `docker exec -it ABD bash`.
109+
110+
Se abrirá la terminal del contedor sobre su terminal del sistema operativo anfitrión. Ahora usted podrá tanto gestionar el sistema operativo subyacente (Debian) del contenedor como acceder a PostgreSQL.
111+
112+
Nota: Si ejecuta el comando `ls` justo después de acceder a dicha terminal, podrá ver que existe una carpeta llamada '_Ejercicios_'. Esta carpeta es la misma que figura en su directorio '_DockerABD_' en el S.O anfitrión (véase el apartado '_Contenido de la carpeta_' para más información).
113+
114+
###### Jesús Gómez - jesus.gomeztocino@alum.uca.es

docker-compose.yml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
version: '3'
2+
services:
3+
ABD:
4+
# Nombre del servicio individual, que se usará como prefijo en nombres de contenedores
5+
build:
6+
context: .
7+
dockerfile: Dockerfile
8+
image: imagenabd # Nombre de la imagen
9+
container_name: ABD # Nombre del contenedor individual
10+
ports:
11+
- "5432:5432"
12+
volumes:
13+
- postgres-data:/var/lib/postgresql/data
14+
- ./Ejercicios:/Ejercicios
15+
16+
volumes:
17+
postgres-data:
18+
19+
# Jesús Gómez - jesus.gomeztocino@alum.uca.es

init.sql

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
DROP TABLE IF EXISTS lectores;
2+
DROP TABLE IF EXISTS libros;
3+
DROP TABLE IF EXISTS prestamos;
4+
5+
CREATE TABLE lectores
6+
(dni varchar(8),
7+
nombre varchar(30),
8+
apellidos varchar(50),
9+
domicilio varchar(50),
10+
poblacion varchar(30),
11+
telefono varchar(20));
12+
13+
ALTER TABLE lectores
14+
ADD CONSTRAINT PK_lectores PRIMARY KEY(dni);
15+
16+
CREATE TABLE libros
17+
(isbn varchar(20),
18+
titulo varchar(30),
19+
autor varchar(50));
20+
21+
ALTER TABLE libros
22+
ADD CONSTRAINT PK_libros PRIMARY KEY(isbn);
23+
24+
CREATE TABLE prestamos
25+
(dni varchar(8),
26+
isbn varchar(20),
27+
fecha date);
28+
29+
ALTER TABLE prestamos
30+
ADD CONSTRAINT PK_prestamos PRIMARY KEY(dni,isbn,fecha);
31+
32+
INSERT INTO lectores
33+
VALUES('48966469','Ernesto','Raposo Belizon','Napoles 13','S.Fdo','661329767');
34+
35+
INSERT INTO lectores
36+
VALUES('47946671','Franciso','Gutierrez Ochoa','Churruca 5','S.Fdo','654218961');
37+
38+
INSERT INTO libros
39+
VALUES('84-7786-734-8','Fundamentos de C++','Francisco Palomo');
40+
41+
INSERT INTO libros
42+
VALUES('72-2243-3972-4','Por fin C-ISO','Gerardo Igurruzaga');
43+
44+
INSERT INTO prestamos
45+
VALUES('48966469','84-7786-734-8',CURRENT_DATE);
46+
47+
INSERT INTO prestamos
48+
VALUES('47946671','72-2243-3972-4',CURRENT_DATE)
49+
50+
-- Jesús Gómez - jesus.gomeztocino@alum.uca.es

0 commit comments

Comments
 (0)