DAPW · Tarea
COMPOSE 1
Instrucciones
Completa un proyecto de Docker Compose para conectar Apache con PostgreSQL. Parte de compose-01.zip, disponible en los materiales de esta tarea y enlazado desde la diapositiva 117.
El proyecto incluye la configuración del servicio web, su Dockerfile, una página HTML, un script CGI, los scripts de inicialización de la base de datos y los archivos de secretos. El archivo compose.yml hace referencia a un servicio db que todavía tienes que definir.
1. Revisar el proyecto
- Localiza la configuración de Apache en
apache/, la página enwww/y el scriptcgi-bin/db-mensajes.sh. - Lee
db-init/001-create-mensajes.sqlpara identificar la tabla y el registro que se crean al inicializar PostgreSQL. - Comprueba cómo están declarados
configsysecretsencompose.yml. Conserva la configuración proporcionada para el servicioweb.
2. Añadir PostgreSQL a Compose
Modifica compose.yml e incorpora un servicio llamado db basado en la imagen postgres:16.
- Configura mediante
environmentel nombre de la base de datos, el usuario y la ruta al archivo que contiene la contraseña. - Utiliza la base de datos
ejemploy el usuariousuario, que son los valores que espera el script CGI suministrado. - Asigna al servicio el secreto
pg_pass, ya declarado en el proyecto. Indica su ruta mediantePOSTGRES_PASSWORD_FILE:/run/secrets/pg_pass. - Monta
./db-initen/docker-entrypoint-initdb.den modo de solo lectura para que PostgreSQL ejecute los scripts SQL al inicializar una base de datos vacía.
La conexión del script debe resolver el nombre db dentro de la red de Compose. La contraseña se toma del secreto; no tienes que escribir su valor en compose.yml.
3. Arrancar y comprobar
- Valida la configuración con
docker compose configy construye y arranca el proyecto con Compose. - Comprueba que los servicios
webydbestán en ejecución y revisa sus logs si se produce un error. - Abre
http://localhost:8080/. La página debe mostrar los mensajes leídos desde PostgreSQL, incluido el registro inicial proporcionado por el script SQL. - Comprueba que la consulta a
/cgi-bin/db-mensajes.shfunciona a través de Apache.
Entrega
Adjunta el enlace al repositorio de GitHub con el proyecto y el compose.yml completado. Incluye un README.md con los comandos para construir, arrancar y detener los servicios, una captura de la página mostrando los datos y una explicación breve de cómo se conectan Apache y PostgreSQL y cómo utilizan el secreto de contraseña.