From cfc31e3f2cb6a249d8f3259fd105a9c91deac0a6 Mon Sep 17 00:00:00 2001 From: jcabo65 Date: Sat, 25 Oct 2025 21:35:15 -0500 Subject: [PATCH 01/19] Create Dockerfile for PHP 7.1 Apache setup --- docker/Dockerfile.web | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 docker/Dockerfile.web diff --git a/docker/Dockerfile.web b/docker/Dockerfile.web new file mode 100644 index 0000000..de4c8a3 --- /dev/null +++ b/docker/Dockerfile.web @@ -0,0 +1,29 @@ +FROM php:7.1-apache + +RUN apt-get update && apt-get install -y \ + wget \ + unzip \ + libzip-dev \ + && docker-php-ext-install pdo pdo_mysql zip \ + && apt-get clean && rm -rf /var/lib/apt/lists/* + +COPY --from=composer:latest /usr/bin/composer /usr/bin/composer + +WORKDIR /var/www/html +COPY . . + +RUN composer install --no-dev --optimize-autoloader + +RUN a2enmod rewrite \ + && echo '\n AllowOverride All\n Require all granted\n' > /etc/apache2/conf-available/docker.conf \ + && a2enconf docker \ + && sed -i 's!/var/www/html!web!g' /etc/apache2/sites-available/000-default.conf + +COPY config/vhost.conf /etc/apache2/sites-available/000-default.conf + +EXPOSE 80 + +ENV DB_HOST=mariadb \ + DB_NAME=sample \ + DB_USER=sampleuser \ + DB_PASS=samplepass From fa90ea5e3d9e9af4dbcfef0dbe5de9c765290709 Mon Sep 17 00:00:00 2001 From: jcabo65 Date: Sat, 25 Oct 2025 21:35:47 -0500 Subject: [PATCH 02/19] Add Dockerfile for MariaDB setup --- docker/Dockerfile.db | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 docker/Dockerfile.db diff --git a/docker/Dockerfile.db b/docker/Dockerfile.db new file mode 100644 index 0000000..2d82bac --- /dev/null +++ b/docker/Dockerfile.db @@ -0,0 +1,8 @@ +FROM mariadb:10.3 + +COPY sql/db.sql /docker-entrypoint-initdb.d/ + +ENV MYSQL_ROOT_PASSWORD=rootpass \ + MYSQL_DATABASE=sample \ + MYSQL_USER=sampleuser \ + MYSQL_PASSWORD=samplepass From cc02216ebe998ee75459b36d6aa5416fe5e8183c Mon Sep 17 00:00:00 2001 From: jcabo65 Date: Sat, 25 Oct 2025 21:36:10 -0500 Subject: [PATCH 03/19] Create docker-compose.yml --- docker/docker-compose.yml | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 docker/docker-compose.yml diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml new file mode 100644 index 0000000..cc8018b --- /dev/null +++ b/docker/docker-compose.yml @@ -0,0 +1,33 @@ +version: '3.8' + +services: + web: + build: + context: .. + dockerfile: docker/Dockerfile.web + image: tuusuario/php-sample-web:latest + ports: + - "8080:80" + depends_on: + - db + environment: + - DB_HOST=db + - DB_NAME=sample + - DB_USER=sampleuser + - DB_PASS=samplepass + + db: + build: + context: .. + dockerfile: docker/Dockerfile.db + image: tuusuario/php-sample-db:latest + environment: + MYSQL_ROOT_PASSWORD: rootpass + MYSQL_DATABASE: sample + MYSQL_USER: sampleuser + MYSQL_PASSWORD: samplepass + volumes: + - db_data:/var/lib/mysql + +volumes: + db_data: From 35c6754cd2471b4c7037857d459c0477f0f1eae4 Mon Sep 17 00:00:00 2001 From: jcabo65 Date: Sun, 26 Oct 2025 02:46:42 +0000 Subject: [PATCH 04/19] =?UTF-8?q?A=C3=B1adir=20Dockerfile.db,=20Dockerfile?= =?UTF-8?q?.web=20y=20composer.lock=20para=20containerizaci=C3=B3n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- composer.lock | 130 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 130 insertions(+) create mode 100644 composer.lock diff --git a/composer.lock b/composer.lock new file mode 100644 index 0000000..bfbaab1 --- /dev/null +++ b/composer.lock @@ -0,0 +1,130 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "6226c4e050e2b55576c081b6dd9120d0", + "packages": [ + { + "name": "twbs/bootstrap", + "version": "v3.4.1", + "source": { + "type": "git", + "url": "https://github.com/twbs/bootstrap.git", + "reference": "68b0d231a13201eb14acd3dc84e51543d16e5f7e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twbs/bootstrap/zipball/68b0d231a13201eb14acd3dc84e51543d16e5f7e", + "reference": "68b0d231a13201eb14acd3dc84e51543d16e5f7e", + "shasum": "" + }, + "replace": { + "twitter/bootstrap": "self.version" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4.x-dev" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jacob Thornton", + "email": "jacobthornton@gmail.com" + }, + { + "name": "Mark Otto", + "email": "markdotto@gmail.com" + } + ], + "description": "The most popular front-end framework for developing responsive, mobile first projects on the web.", + "homepage": "https://getbootstrap.com/", + "keywords": [ + "JS", + "css", + "framework", + "front-end", + "less", + "mobile-first", + "responsive", + "web" + ], + "support": { + "issues": "https://github.com/twbs/bootstrap/issues", + "source": "https://github.com/twbs/bootstrap/tree/v3.4.1" + }, + "time": "2019-02-13T15:55:38+00:00" + }, + { + "name": "willdurand/negotiation", + "version": "v2.3.1", + "source": { + "type": "git", + "url": "https://github.com/willdurand/Negotiation.git", + "reference": "03436ededa67c6e83b9b12defac15384cb399dc9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/willdurand/Negotiation/zipball/03436ededa67c6e83b9b12defac15384cb399dc9", + "reference": "03436ededa67c6e83b9b12defac15384cb399dc9", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.3-dev" + } + }, + "autoload": { + "psr-4": { + "Negotiation\\": "src/Negotiation" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "William Durand", + "email": "will+git@drnd.me" + } + ], + "description": "Content Negotiation tools for PHP provided as a standalone library.", + "homepage": "http://williamdurand.fr/Negotiation/", + "keywords": [ + "accept", + "content", + "format", + "header", + "negotiation" + ], + "support": { + "issues": "https://github.com/willdurand/Negotiation/issues", + "source": "https://github.com/willdurand/Negotiation/tree/2.x" + }, + "time": "2017-05-14T17:21:12+00:00" + } + ], + "packages-dev": [], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [], + "plugin-api-version": "2.6.0" +} From 620f21f0251ab8e2c93bcf6ba169c5306ca0fae1 Mon Sep 17 00:00:00 2001 From: jcabo65 Date: Sun, 26 Oct 2025 02:55:18 +0000 Subject: [PATCH 05/19] Ajustar Dockerfile.web para eliminar dependencia de vhost.conf --- docker/Dockerfile.web | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/docker/Dockerfile.web b/docker/Dockerfile.web index de4c8a3..5e7c6c3 100644 --- a/docker/Dockerfile.web +++ b/docker/Dockerfile.web @@ -19,11 +19,9 @@ RUN a2enmod rewrite \ && a2enconf docker \ && sed -i 's!/var/www/html!web!g' /etc/apache2/sites-available/000-default.conf -COPY config/vhost.conf /etc/apache2/sites-available/000-default.conf - EXPOSE 80 ENV DB_HOST=mariadb \ DB_NAME=sample \ DB_USER=sampleuser \ - DB_PASS=samplepass + DB_PASS=samplepass \ No newline at end of file From d3fe8fd866c9e8687e41e04d350fc915b754e0a8 Mon Sep 17 00:00:00 2001 From: jcabo65 Date: Sun, 26 Oct 2025 02:57:52 +0000 Subject: [PATCH 06/19] =?UTF-8?q?Actualizar=20Dockerfile.web=20a=20php:7.1?= =?UTF-8?q?-apache-stretch=20para=20resolver=20errores=20de=20instalaci?= =?UTF-8?q?=C3=B3n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/Dockerfile.web | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/Dockerfile.web b/docker/Dockerfile.web index 5e7c6c3..36e200c 100644 --- a/docker/Dockerfile.web +++ b/docker/Dockerfile.web @@ -1,4 +1,4 @@ -FROM php:7.1-apache +FROM php:7.1-apache-stretch RUN apt-get update && apt-get install -y \ wget \ From bcb3144d0071ee573a46f3189155bff981df8099 Mon Sep 17 00:00:00 2001 From: jcabo65 Date: Sun, 26 Oct 2025 02:59:08 +0000 Subject: [PATCH 07/19] =?UTF-8?q?Actualizar=20Dockerfile.web=20a=20php:7.2?= =?UTF-8?q?-apache=20para=20resolver=20errores=20de=20instalaci=C3=B3n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/Dockerfile.web | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/Dockerfile.web b/docker/Dockerfile.web index 36e200c..34e2807 100644 --- a/docker/Dockerfile.web +++ b/docker/Dockerfile.web @@ -1,4 +1,4 @@ -FROM php:7.1-apache-stretch +FROM php:7.2-apache RUN apt-get update && apt-get install -y \ wget \ From cadf464f8c383020491443d82f6d6c5ae159ac71 Mon Sep 17 00:00:00 2001 From: jcabo65 Date: Sun, 26 Oct 2025 03:00:46 +0000 Subject: [PATCH 08/19] Optimizar Dockerfile.web con mirror alternativo y comandos separados --- docker/Dockerfile.web | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/docker/Dockerfile.web b/docker/Dockerfile.web index 34e2807..1574275 100644 --- a/docker/Dockerfile.web +++ b/docker/Dockerfile.web @@ -1,11 +1,17 @@ FROM php:7.2-apache -RUN apt-get update && apt-get install -y \ - wget \ - unzip \ - libzip-dev \ - && docker-php-ext-install pdo pdo_mysql zip \ - && apt-get clean && rm -rf /var/lib/apt/lists/* +# Usar un mirror alternativo de APT para mayor confiabilidad +RUN sed -i 's/deb.debian.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list + +# Actualizar e instalar dependencias por separado +RUN apt-get update +RUN apt-get install -y wget unzip libzip-dev + +# Instalar extensiones PHP +RUN docker-php-ext-install pdo pdo_mysql zip + +# Limpiar caché +RUN apt-get clean && rm -rf /var/lib/apt/lists/* COPY --from=composer:latest /usr/bin/composer /usr/bin/composer From a00232d7eaa6f0d384b090a2b423b5a97201610b Mon Sep 17 00:00:00 2001 From: jcabo65 Date: Sun, 26 Oct 2025 03:01:57 +0000 Subject: [PATCH 09/19] Ajustar Dockerfile.web con mirror alternativo y reintento para apt-get update --- docker/Dockerfile.web | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/docker/Dockerfile.web b/docker/Dockerfile.web index 1574275..ce1c235 100644 --- a/docker/Dockerfile.web +++ b/docker/Dockerfile.web @@ -1,10 +1,12 @@ FROM php:7.2-apache -# Usar un mirror alternativo de APT para mayor confiabilidad -RUN sed -i 's/deb.debian.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list +# Usar un mirror alternativo de APT más confiable +RUN sed -i 's/deb.debian.org/debian.mirror.digitalpacific.com.au/g' /etc/apt/sources.list -# Actualizar e instalar dependencias por separado -RUN apt-get update +# Ejecutar apt-get update con reintentos para manejar fallos temporales +RUN apt-get update || apt-get update + +# Instalar dependencias RUN apt-get install -y wget unzip libzip-dev # Instalar extensiones PHP From 1e623457ef9dfd6a8c3cb021b48028e38d5b79f7 Mon Sep 17 00:00:00 2001 From: jcabo65 Date: Sun, 26 Oct 2025 03:03:22 +0000 Subject: [PATCH 10/19] Ajustar Dockerfile.web con mirror oficial y retraso para apt-get update --- docker/Dockerfile.web | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/docker/Dockerfile.web b/docker/Dockerfile.web index ce1c235..40e41d1 100644 --- a/docker/Dockerfile.web +++ b/docker/Dockerfile.web @@ -1,10 +1,11 @@ FROM php:7.2-apache -# Usar un mirror alternativo de APT más confiable -RUN sed -i 's/deb.debian.org/debian.mirror.digitalpacific.com.au/g' /etc/apt/sources.list +# Restaurar mirror predeterminado y agregar un fallback +RUN sed -i 's/deb.debian.org/deb.debian.org/g' /etc/apt/sources.list +RUN echo "deb http://deb.debian.org/debian stretch main" > /etc/apt/sources.list.d/stretch.list -# Ejecutar apt-get update con reintentos para manejar fallos temporales -RUN apt-get update || apt-get update +# Intentar actualizar con reintentos y manejo de errores +RUN apt-get update || { sleep 5; apt-get update; } # Instalar dependencias RUN apt-get install -y wget unzip libzip-dev From 28d94615b2d5bc4de0e096d1edbbdd851c9b24ff Mon Sep 17 00:00:00 2001 From: jcabo65 Date: Sun, 26 Oct 2025 03:05:51 +0000 Subject: [PATCH 11/19] Actualizar a php:7.4-apache y ajustar apt-get update para Codespaces --- docker/Dockerfile.web | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/docker/Dockerfile.web b/docker/Dockerfile.web index 40e41d1..14c5b9d 100644 --- a/docker/Dockerfile.web +++ b/docker/Dockerfile.web @@ -1,11 +1,7 @@ -FROM php:7.2-apache +FROM php:7.4-apache -# Restaurar mirror predeterminado y agregar un fallback -RUN sed -i 's/deb.debian.org/deb.debian.org/g' /etc/apt/sources.list -RUN echo "deb http://deb.debian.org/debian stretch main" > /etc/apt/sources.list.d/stretch.list - -# Intentar actualizar con reintentos y manejo de errores -RUN apt-get update || { sleep 5; apt-get update; } +# Forzar actualización de fuentes APT +RUN apt-get update -o Acquire::Check-Valid-Until=false -o Acquire::Check-Date=false || { sleep 10; apt-get update -o Acquire::Check-Valid-Until=false -o Acquire::Check-Date=false; } # Instalar dependencias RUN apt-get install -y wget unzip libzip-dev From f2d7bbbbbba778235191256b86cec9cd9a370df4 Mon Sep 17 00:00:00 2001 From: jcabo65 Date: Sun, 26 Oct 2025 03:07:58 +0000 Subject: [PATCH 12/19] =?UTF-8?q?Ajustar=20permisos=20y=20configuraci?= =?UTF-8?q?=C3=B3n=20de=20Apache=20en=20Dockerfile.web=20para=20resolver?= =?UTF-8?q?=20Forbidden?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/Dockerfile.web | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docker/Dockerfile.web b/docker/Dockerfile.web index 14c5b9d..90dfd62 100644 --- a/docker/Dockerfile.web +++ b/docker/Dockerfile.web @@ -17,10 +17,12 @@ COPY --from=composer:latest /usr/bin/composer /usr/bin/composer WORKDIR /var/www/html COPY . . -RUN composer install --no-dev --optimize-autoloader +# Ajustar permisos para el directorio web +RUN chown -R www-data:www-data /var/www/html/web \ + && chmod -R 755 /var/www/html/web RUN a2enmod rewrite \ - && echo '\n AllowOverride All\n Require all granted\n' > /etc/apache2/conf-available/docker.conf \ + && echo '\n Options Indexes FollowSymLinks\n AllowOverride All\n Require all granted\n' > /etc/apache2/conf-available/docker.conf \ && a2enconf docker \ && sed -i 's!/var/www/html!web!g' /etc/apache2/sites-available/000-default.conf From 325218c9b275f63a7d676698c431393660c91010 Mon Sep 17 00:00:00 2001 From: jcabo65 Date: Sun, 26 Oct 2025 03:11:06 +0000 Subject: [PATCH 13/19] =?UTF-8?q?Ajustar=20Dockerfile.web=20con=20permisos?= =?UTF-8?q?=20y=20manejo=20de=20enlaces=20simb=C3=B3licos=20para=20web/?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/Dockerfile.web | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docker/Dockerfile.web b/docker/Dockerfile.web index 90dfd62..bef993d 100644 --- a/docker/Dockerfile.web +++ b/docker/Dockerfile.web @@ -17,14 +17,14 @@ COPY --from=composer:latest /usr/bin/composer /usr/bin/composer WORKDIR /var/www/html COPY . . -# Ajustar permisos para el directorio web -RUN chown -R www-data:www-data /var/www/html/web \ - && chmod -R 755 /var/www/html/web +# Ajustar permisos y manejar enlaces simbólicos +RUN chown -R www-data:www-data /var/www/html/web /var/www/html/vendor \ + && chmod -R 755 /var/www/html/web /var/www/html/vendor \ + && ln -sf /var/www/html/vendor/twbs/bootstrap/dist/fonts/ /var/www/html/web/fonts RUN a2enmod rewrite \ - && echo '\n Options Indexes FollowSymLinks\n AllowOverride All\n Require all granted\n' > /etc/apache2/conf-available/docker.conf \ - && a2enconf docker \ - && sed -i 's!/var/www/html!web!g' /etc/apache2/sites-available/000-default.conf + && echo '\n ServerName localhost\n DocumentRoot /var/www/html/web\n \n Options Indexes FollowSymLinks\n AllowOverride All\n Require all granted\n \n' > /etc/apache2/sites-available/000-default.conf \ + && a2enmod rewrite EXPOSE 80 From bc26bb35e7b6b8bbe405167d5315191c23ded5ed Mon Sep 17 00:00:00 2001 From: jcabo65 Date: Sun, 26 Oct 2025 03:48:07 +0000 Subject: [PATCH 14/19] =?UTF-8?q?A=C3=B1adir=20autoload=20PSR-4=20para=20s?= =?UTF-8?q?rc/=20sin=20modificar=20c=C3=B3digo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- composer.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/composer.json b/composer.json index a164f98..5de3161 100644 --- a/composer.json +++ b/composer.json @@ -2,5 +2,10 @@ "require": { "willdurand/negotiation": "^2.2", "twbs/bootstrap": "^3.3" + }, + "autoload": { + "psr-4": { + "": "src/" + } } } From f3592e288f3b427bf2a17e82b349d6b267965ddc Mon Sep 17 00:00:00 2001 From: jcabo65 Date: Sun, 26 Oct 2025 03:48:51 +0000 Subject: [PATCH 15/19] =?UTF-8?q?Asegurar=20ejecuci=C3=B3n=20de=20composer?= =?UTF-8?q?=20install=20para=20autoloading?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/Dockerfile.web | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/docker/Dockerfile.web b/docker/Dockerfile.web index bef993d..a27e374 100644 --- a/docker/Dockerfile.web +++ b/docker/Dockerfile.web @@ -3,28 +3,29 @@ FROM php:7.4-apache # Forzar actualización de fuentes APT RUN apt-get update -o Acquire::Check-Valid-Until=false -o Acquire::Check-Date=false || { sleep 10; apt-get update -o Acquire::Check-Valid-Until=false -o Acquire::Check-Date=false; } -# Instalar dependencias -RUN apt-get install -y wget unzip libzip-dev - -# Instalar extensiones PHP +# Instalar dependencias y Composer +RUN apt-get install -y wget unzip libzip-dev vim-tiny RUN docker-php-ext-install pdo pdo_mysql zip - -# Limpiar caché RUN apt-get clean && rm -rf /var/lib/apt/lists/* - COPY --from=composer:latest /usr/bin/composer /usr/bin/composer WORKDIR /var/www/html COPY . . -# Ajustar permisos y manejar enlaces simbólicos -RUN chown -R www-data:www-data /var/www/html/web /var/www/html/vendor \ +# Instalar dependencias de Composer +RUN composer install --no-scripts --no-interaction + +# Ajustar permisos y enlaces +RUN chown -R www-data:www-data /var/www/html/web /var/www/html/vendor || { echo "Error ajustando permisos"; exit 1; } \ && chmod -R 755 /var/www/html/web /var/www/html/vendor \ && ln -sf /var/www/html/vendor/twbs/bootstrap/dist/fonts/ /var/www/html/web/fonts RUN a2enmod rewrite \ - && echo '\n ServerName localhost\n DocumentRoot /var/www/html/web\n \n Options Indexes FollowSymLinks\n AllowOverride All\n Require all granted\n \n' > /etc/apache2/sites-available/000-default.conf \ - && a2enmod rewrite + && echo '\n ServerName localhost\n DocumentRoot /var/www/html/web\n \n Options Indexes FollowSymLinks\n AllowOverride All\n Require all granted\n \n ErrorLog ${APACHE_LOG_DIR}/error.log\n CustomLog ${APACHE_LOG_DIR}/access.log combined\n' > /etc/apache2/sites-available/000-default.conf \ + && a2ensite 000-default.conf \ + && sed -i 's/LogLevel warn/LogLevel debug/g' /etc/apache2/apache2.conf \ + && apache2ctl configtest \ + && apache2ctl restart EXPOSE 80 From bcc6e9028ad29e3b7792464f74c568a58816d5a8 Mon Sep 17 00:00:00 2001 From: jcabo65 Date: Sun, 26 Oct 2025 04:01:21 +0000 Subject: [PATCH 16/19] =?UTF-8?q?Mover=20autoloader.php,=20bootstrap.php?= =?UTF-8?q?=20y=20error=5Fhandler.php=20a=20web/=20sin=20modificar=20c?= =?UTF-8?q?=C3=B3digo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/autoloader.php | 10 ++++++++++ web/bootstrap.php | 4 ++++ web/error_handler.php | 19 +++++++++++++++++++ 3 files changed, 33 insertions(+) create mode 100644 web/autoloader.php create mode 100644 web/bootstrap.php create mode 100644 web/error_handler.php diff --git a/web/autoloader.php b/web/autoloader.php new file mode 100644 index 0000000..ff44f9d --- /dev/null +++ b/web/autoloader.php @@ -0,0 +1,10 @@ +format("c")}] [$errno] $errstr in $errfile on line $errline\n", FILE_APPEND | LOCK_EX); + } +); + +set_exception_handler( + function ($exception) + { + header($_SERVER["SERVER_PROTOCOL"] . " 500 Internal Server Error", true, 500); + $dateTime = new DateTime(); + file_put_contents(__DIR__ . "/logs/error.log", "[{$dateTime->format("c")}] " . $exception->getMessage() . "\n", FILE_APPEND | LOCK_EX); + } +); From d19edb0cf006c467b1b6c8adab7b607b8cd85040 Mon Sep 17 00:00:00 2001 From: jcabo65 Date: Sun, 26 Oct 2025 04:04:56 +0000 Subject: [PATCH 17/19] =?UTF-8?q?Ajustar=20ruta=20en=20autoloader.php=20a?= =?UTF-8?q?=20../src/=20sin=20modificar=20c=C3=B3digo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/autoloader.php | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/web/autoloader.php b/web/autoloader.php index ff44f9d..9f8b565 100644 --- a/web/autoloader.php +++ b/web/autoloader.php @@ -1,10 +1 @@ - Date: Sun, 26 Oct 2025 19:55:08 -0500 Subject: [PATCH 18/19] Create publish-dockerhub.yml --- .github/workflows/publish-dockerhub.yml | 33 +++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 .github/workflows/publish-dockerhub.yml diff --git a/.github/workflows/publish-dockerhub.yml b/.github/workflows/publish-dockerhub.yml new file mode 100644 index 0000000..e30452b --- /dev/null +++ b/.github/workflows/publish-dockerhub.yml @@ -0,0 +1,33 @@ +name: Publish to Docker Hub +on: + workflow_dispatch: + push: + branches: [ main ] + paths: + - 'docker/**' + - '.github/workflows/**' +jobs: + build-and-push: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: docker/setup-qemu-action@v3 + - uses: docker/setup-buildx-action@v3 + - uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - name: Build & Push WEB + uses: docker/build-push-action@v6 + with: + context: . + file: docker/Dockerfile.web + push: true + tags: jcabo65/php-sample-web:latest + - name: Build & Push DB + uses: docker/build-push-action@v6 + with: + context: . + file: docker/Dockerfile.db + push: true + tags: jcabo65/php-sample-db:latest From fa62f88ee3fa83fa5fd2e270b9600ad344639308 Mon Sep 17 00:00:00 2001 From: jcabo65 Date: Sun, 26 Oct 2025 20:16:41 -0500 Subject: [PATCH 19/19] Add README for Docker application containerization This document provides additional information on Docker containerization for the application, including public images and relevant files in the repository. --- web/README-ITEM2-DOCKER.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 web/README-ITEM2-DOCKER.md diff --git a/web/README-ITEM2-DOCKER.md b/web/README-ITEM2-DOCKER.md new file mode 100644 index 0000000..0e4e315 --- /dev/null +++ b/web/README-ITEM2-DOCKER.md @@ -0,0 +1,22 @@ +# Item 2 – Application Containerization (Docker) + +Este documento complementa el README original **sin modificar el código fuente**. +Se publican dos imágenes en Docker Hub y se provee `docker-compose` para ejecutar la app. + +## Imágenes públicas +- Web: https://hub.docker.com/r/jcabo65/php-sample-web +- DB: https://hub.docker.com/r/jcabo65/php-sample-db + +## Archivos relevantes en este repo +- `docker/Dockerfile.web` – imagen PHP/Apache de la aplicación. +- `docker/Dockerfile.db` – imagen de base (MariaDB). +- `docker/docker-compose.yml` – orquesta `web` y `db` usando **las imágenes públicas**. +- `docker/docker-compose.override.yml` – comparte `/var/run/mysqld` para que la app (que usa `host=localhost`) conecte por **socket** sin cambiar código. + +## Requisitos +- Docker + Docker Compose. + +## Cómo ejecutar (2 líneas) +```bash +docker compose -f docker/docker-compose.yml -f docker/docker-compose.override.yml up -d +# abrir http://localhost:8080