{"id":4621,"date":"2025-07-13T16:53:15","date_gmt":"2025-07-13T22:53:15","guid":{"rendered":"https:\/\/linuxitos.com\/main\/?p=4621"},"modified":"2025-07-13T16:53:16","modified_gmt":"2025-07-13T22:53:16","slug":"usar-php-desde-docker-fedora-42","status":"publish","type":"post","link":"https:\/\/linuxitos.com\/main\/usar-php-desde-docker-fedora-42\/","title":{"rendered":"Usar PHP desde Docker | Fedora 42"},"content":{"rendered":"\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2025\/07\/php-docker.png\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"380\" src=\"https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2025\/07\/php-docker.png\" alt=\"\" class=\"wp-image-4622\" srcset=\"https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2025\/07\/php-docker.png 800w, https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2025\/07\/php-docker-300x143.png 300w, https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2025\/07\/php-docker-768x365.png 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\">Contexto:<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">XAMPP era el entorno de desarrollo para PHP favorito de muchos, ya que inclu\u00eda en empaquetados Base de datos, PHP, Perl, phpMyAdmin para la gesti\u00f3n de base de datos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sin embargo, XAMPP se qued\u00f3 hasta la versi\u00f3n 8.2.12, aparentemente est\u00e1 descontinuado, por lo que es necesario buscar nuevas formas de probar y desarrollar PHP<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aqu\u00ed entra en juego Docker, la idea es sencilla, instalar docker en fedora, crear una carpeta donde estar\u00e1n todos los archivos en el host, y enviarlos a docker, abrir el enlace con la url del proyecto en cuesti\u00f3n:<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Instalaci\u00f3n de Docker<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">La instalaci\u00f3n de docker y configuraci\u00f3n, viene en otro tutorial para no extender \u00e9ste tutorial, por lo que, se ver el siguiente link: <a href=\"https:\/\/blog.linuxitos.com\/post\/instalar-docker-fedora-42\" target=\"_blank\" rel=\"noreferrer noopener\">Tutorial Instalar Docker Fedora<\/a><\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Arquitectura para proyecto de PHP con Docker<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">La idea es la siguiente: Docker tendr\u00e1 instalado php 8.4, para \u00e9ste ejemplo, pero puede ser cualquier versi\u00f3n que se requiera. Desde el host editar y modificar los archivos del proyecto, incluso contar con la base de datos instalada en el host. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Montar el proyecto en docker, conforme se requiera e ir modificando:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2025\/07\/php-docker-files.png\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"400\" src=\"https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2025\/07\/php-docker-files.png\" alt=\"\" class=\"wp-image-4625\" srcset=\"https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2025\/07\/php-docker-files.png 800w, https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2025\/07\/php-docker-files-300x150.png 300w, https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2025\/07\/php-docker-files-768x384.png 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Crear la estructura del proyecto en directorios:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>proyecto\/\n\u251c\u2500\u2500 docker\/\n\u2502   \u251c\u2500\u2500 Dockerfile\n\u251c\u2500\u2500 docker-compose.yml\n\u251c\u2500\u2500 public\/            # directorio para el proyecto\n|   \u251c\u2500\u2500 index.php<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ir al directorio donde estar\u00e1 ubicado el proyecto, ejemplo Carpeta Personal\/www y crear el primer directorio llamado proyecto, o bien asignar el nombre que se desee:<\/p>\n\n\n\n<pre style=\"background: rgb(54, 63, 72); border-radius: 6px; border: 0px; box-sizing: border-box; color: white; font-family: menlo, monaco, monospace; font-style: inherit; font-weight: inherit; line-height: 15.68px; margin-bottom: 1.1em; max-width: 100%; outline: 0px; overflow: auto; padding: 13.125px 16.4062px; vertical-align: baseline; white-space: pre-wrap; word-wrap: break-word;\">mkdir proyecto<\/pre>\n\n\n\n<pre style=\"background: rgb(54, 63, 72); border-radius: 6px; border: 0px; box-sizing: border-box; color: white; font-family: menlo, monaco, monospace; font-style: inherit; font-weight: inherit; line-height: 15.68px; margin-bottom: 1.1em; max-width: 100%; outline: 0px; overflow: auto; padding: 13.125px 16.4062px; vertical-align: baseline; white-space: pre-wrap; word-wrap: break-word;\">cd proyecto\nmkdir docker\nmkdir public<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dentro del directorio proyecto crear el siguiente archivo: docker-compose.yml<\/p>\n\n\n\n<pre style=\"background: rgb(245, 245, 245); border-radius: 6px; border: 1px solid rgb(204, 204, 204); box-sizing: border-box; color: #333; font-family: menlo, monaco, monospace; font-style: inherit; font-weight: inherit; line-height: 15.68px; margin-bottom: 1.1em; max-width: 100%; outline: 0px; overflow: auto; padding: 13.125px 16.4062px; vertical-align: baseline; white-space: pre-wrap; word-wrap: break-word;\">services:\n  phpweb:\n    build:\n      context: .\n      dockerfile: docker\/Dockerfile\n    container_name: php84-clase\n    volumes:\n      - .\/public:\/var\/www\/html\n    network_mode: \"host\"<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dentro del directorio docker crear el archivo Dokerfile<\/p>\n\n\n\n<pre style=\"background: rgb(245, 245, 245); border-radius: 6px; border: 1px solid rgb(204, 204, 204); box-sizing: border-box; color: #333; font-family: menlo, monaco, monospace; font-style: inherit; font-weight: inherit; line-height: 15.68px; margin-bottom: 1.1em; max-width: 100%; outline: 0px; overflow: auto; padding: 13.125px 16.4062px; vertical-align: baseline; white-space: pre-wrap; word-wrap: break-word;\">FROM php:8.4-apache\n\n# Instala extensiones necesarias\nRUN docker-php-ext-install pdo pdo_mysql mysqli\n\n# Cambiar Apache para escuchar en el puerto 81\nRUN sed -i 's\/80\/81\/g' \/etc\/apache2\/ports.conf \/etc\/apache2\/sites-available\/000-default.conf\n\n# Habilita mod_rewrite si lo necesitas\nRUN a2enmod rewrite\n\n# Asegura que el contenedor tenga permisos correctos\nRUN chown -R www-data:www-data \/var\/www\/html\n\n# Copia inicial del c\u00f3digo (ser\u00e1 sobrescrito por volumen)\nCOPY .\/public \/var\/www\/html<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Y finalmente del directorio public, crear un archivo de prueba index.php cu\u00e1l contendr\u00e1 lo que se requiera de php, y en este directorio contendr\u00e1 todo lo necesario para el proyecto que ser\u00e1 montado directo en docker:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\n\necho 'Hola mundo desde PHP y Docker';<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">Levantar Docker<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Levantar el servicio, s\u00f3lo si el servicio de docker no se inicia con el sistema:<\/p>\n\n\n\n<pre style=\"background: rgb(54, 63, 72); border-radius: 6px; border: 0px; box-sizing: border-box; color: white; font-family: menlo, monaco, monospace; font-style: inherit; font-weight: inherit; line-height: 15.68px; margin-bottom: 1.1em; max-width: 100%; outline: 0px; overflow: auto; padding: 13.125px 16.4062px; vertical-align: baseline; white-space: pre-wrap; word-wrap: break-word;\">sudo systemctl start docker<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Iniciar o instalar el contenedor<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00c9ste comando se realiza desde el directorio principal, en \u00e9ste ejemplo se llama proyecto:<\/p>\n\n\n\n<pre style=\"background: rgb(54, 63, 72); border-radius: 6px; border: 0px; box-sizing: border-box; color: white; font-family: menlo, monaco, monospace; font-style: inherit; font-weight: inherit; line-height: 15.68px; margin-bottom: 1.1em; max-width: 100%; outline: 0px; overflow: auto; padding: 13.125px 16.4062px; vertical-align: baseline; white-space: pre-wrap; word-wrap: break-word;\">docker compose up --build<\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2025\/07\/Screenshot-From-2025-07-13-16-52-27.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"581\" src=\"https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2025\/07\/Screenshot-From-2025-07-13-16-52-27-1024x581.png\" alt=\"\" class=\"wp-image-4628\" srcset=\"https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2025\/07\/Screenshot-From-2025-07-13-16-52-27-1024x581.png 1024w, https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2025\/07\/Screenshot-From-2025-07-13-16-52-27-300x170.png 300w, https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2025\/07\/Screenshot-From-2025-07-13-16-52-27-768x436.png 768w, https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2025\/07\/Screenshot-From-2025-07-13-16-52-27.png 1355w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Y listo, se tiene un entorno de desarrollo de PHP, cualquier comentario, favor de hacerlo saber.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Contexto: XAMPP era el entorno de desarrollo para PHP favorito de muchos, ya que inclu\u00eda en empaquetados Base de datos, PHP, Perl, phpMyAdmin para la gesti\u00f3n de base de datos. Sin embargo, XAMPP se qued\u00f3 hasta la versi\u00f3n 8.2.12, aparentemente est\u00e1 descontinuado, por lo que es necesario buscar nuevas formas de probar y desarrollar PHP [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":4622,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1540,1543,67,1124,291,1511,1541,1890],"tags":[1694,1561,1638,1556],"class_list":["post-4621","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-develepmet","category-developer","category-php","category-php-and-mysql","category-phppgadmin","category-server","category-web-developer","category-web-development","tag-docker","tag-fedora","tag-laravel","tag-php"],"_links":{"self":[{"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/posts\/4621","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/comments?post=4621"}],"version-history":[{"count":5,"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/posts\/4621\/revisions"}],"predecessor-version":[{"id":4629,"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/posts\/4621\/revisions\/4629"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/media\/4622"}],"wp:attachment":[{"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/media?parent=4621"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/categories?post=4621"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/tags?post=4621"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}