{"id":74579,"date":"2024-04-16T16:15:24","date_gmt":"2024-04-16T14:15:24","guid":{"rendered":"https:\/\/kinsta.com\/es\/?p=74579&#038;preview=true&#038;preview_id=74579"},"modified":"2024-04-25T11:29:21","modified_gmt":"2024-04-25T09:29:21","slug":"instalar-docker-php-ext","status":"publish","type":"post","link":"https:\/\/kinsta.com\/es\/blog\/instalar-docker-php-ext\/","title":{"rendered":"C\u00f3mo instalar dependencias y extensiones de PHP con Docker"},"content":{"rendered":"<p><a href=\"https:\/\/kinsta.com\/es\/blog\/que-es-docker\/\">Docker<\/a> es una popular plataforma de <a href=\"https:\/\/kinsta.com\/es\/blog\/codigo-abierto-vs-codigo-propietario\/\">c\u00f3digo abierto<\/a> para desarrollar, enviar y ejecutar aplicaciones. Encapsula las aplicaciones y sus dependencias en contenedores para promover la coherencia entre distintos entornos. Esta coherencia ayuda a evitar problemas relacionados con conflictos de dependencias y discrepancias del tipo \u00abfunciona en mi m\u00e1quina\u00bb.<\/p>\n<p>Con Docker, puedes definir las dependencias y extensiones necesarias utilizando <a href=\"https:\/\/kinsta.com\/es\/blog\/dockerfile-entrypoint\/\">Dockerfiles<\/a>. Esto significa que tus aplicaciones disponen de todas las bibliotecas y herramientas necesarias en un entorno reproducible y aislado.<\/p>\n<p>El <a href=\"https:\/\/sevalla.com\/application-hosting\/\">Alojamiento de Aplicaciones de Kinsta<\/a> ofrece soporte din\u00e1mico para <a href=\"https:\/\/docs.sevalla.com\/applications\/build-options\/dockerfile\">Dockerfiles<\/a> personalizados, lo que te permite tener un mayor control del entorno de tu aplicaci\u00f3n. Con un Dockerfile, puedes utilizar casi cualquier lenguaje: no est\u00e1s restringido a los lenguajes soportados por <a href=\"https:\/\/docs.sevalla.com\/applications\/build-options\/nixpacks\">Nixpacks<\/a> o <a href=\"https:\/\/docs.sevalla.com\/applications\/build-options\/buildpacks\">Buildpacks<\/a>.<\/p>\n<p>Este art\u00edculo pr\u00e1ctico te explica c\u00f3mo instalar y utilizar dependencias y extensiones <a href=\"https:\/\/kinsta.com\/es\/blog\/que-es-php\/\">PHP<\/a> en Docker.<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>\u00bfPor qu\u00e9 utilizar Docker para instalar dependencias?<\/h2>\n<p>Utilizar Docker para instalar dependencias tiene varias ventajas:<\/p>\n<ul>\n<li><strong>Consistencia del entorno<\/strong> \u2014 Docker te permite empaquetar tu aplicaci\u00f3n, sus dependencias y sus configuraciones en un contenedor. Este enfoque garantiza que el entorno en el que se ejecuta tu aplicaci\u00f3n sigue siendo coherente en diferentes configuraciones y sistemas, incluidos los entornos de desarrollo, pruebas y producci\u00f3n.<\/li>\n<li><strong>Facilidad de configuraci\u00f3n y resoluci\u00f3n de dependencias<\/strong> \u2014 Docker te permite configurar el entorno de tu aplicaci\u00f3n en cualquier m\u00e1quina que lo admita, especificando todas sus dependencias y configuraciones necesarias. Como resultado, evitas problemas de compatibilidad y la molestia de instalar manualmente las dependencias.<\/li>\n<li><strong>Control de versiones y aislamiento<\/strong> \u2014 Los contenedores Docker encapsulan todas las dependencias, incluidas sus versiones espec\u00edficas dentro del contenedor. Esto significa que puedes controlar la versi\u00f3n de tu aplicaci\u00f3n y sus dependencias, fomentando la reproducibilidad y eliminando los conflictos entre las distintas versiones de las dependencias.<\/li>\n<\/ul>\n<p>Adem\u00e1s, los contenedores Docker proporcionan aislamiento, lo que ayuda a eliminar conflictos entre dependencias de diferentes aplicaciones que se ejecutan en el mismo sistema.<\/p>\n<h2>Configura tu aplicaci\u00f3n en Kinsta<\/h2>\n<p>Configurar tu aplicaci\u00f3n en Kinsta es sencillo. Visita MyKinsta y sigue el <a href=\"https:\/\/kinsta.com\/es\/suscripcion\/\" target=\"_blank\" rel=\"noopener noreferrer\">proceso de registro<\/a>. Una vez registrado, podr\u00e1s acceder a un potente panel de control de alojamiento y a un conjunto de funciones dise\u00f1adas para optimizar el rendimiento y la seguridad.<\/p>\n<p>El alojamiento de aplicaciones de Kinsta es <a href=\"https:\/\/docs.sevalla.com\/applications\/overviewapplication-getting-started#main\">compatible con diversos lenguajes de programaci\u00f3n<\/a>, como PHP, Python, Node.js y Ruby. Este amplio soporte de lenguajes garantiza la compatibilidad con diversas aplicaciones, permiti\u00e9ndote elegir el lenguaje que mejor se adapte a los requisitos de tu proyecto.<\/p>\n<p>Por ejemplo, si est\u00e1s desarrollando una aplicaci\u00f3n web din\u00e1mica con PHP, el entorno de alojamiento optimizado de Kinsta garantiza un alto rendimiento y fiabilidad para tus proyectos basados en PHP. O, si est\u00e1s construyendo una API RESTful con <a href=\"https:\/\/kinsta.com\/es\/blog\/que-es-node-js\/\">Node.js<\/a> o una aplicaci\u00f3n web basada en datos con Python, Kinsta proporciona la infraestructura y el soporte necesarios para tu aplicaci\u00f3n.<\/p>\n<p>Para experimentar c\u00f3mo desplegar una aplicaci\u00f3n utilizando un Dockerfile en Kinsta, utiliza esta aplicaci\u00f3n, un sistema b\u00e1sico de autenticaci\u00f3n basado en PHP que utiliza MariaDB para almacenar datos. Esta aplicaci\u00f3n tambi\u00e9n aprovecha algunos paquetes composer, como <a href=\"https:\/\/github.com\/Respect\/Validation\" target=\"_blank\" rel=\"noopener noreferrer\">respect\/validation<\/a> para la validaci\u00f3n de entradas e <a href=\"https:\/\/github.com\/ircmaxell\/password_compat\" target=\"_blank\" rel=\"noopener noreferrer\">ircmaxell\/password-compat<\/a> para el hashing de contrase\u00f1as.<\/p>\n<h2>Prepara tu entorno Docker<\/h2>\n<p>Un Dockerfile es un archivo de texto que contiene todos los comandos, dispuestos en el orden necesario, que necesitas para construir la imagen requerida. Un Dockerfile b\u00e1sico para una aplicaci\u00f3n PHP tendr\u00eda este aspecto:<\/p>\n<pre><code class=\"language-yaml\">FROM php:8.3-cli\nCOPY . \/usr\/src\/myapp\nWORKDIR \/usr\/src\/myapp\nCMD [ \"php\", \".\/your-script.php\" ]<\/code><\/pre>\n<p>Este Dockerfile crea un entorno contenedor para ejecutar un script PHP desde una interfaz de l\u00ednea de comandos (CLI). Comienza utilizando la imagen oficial de PHP con la variante CLI, asegur\u00e1ndose de que s\u00f3lo se incluye en el contenedor el tiempo de ejecuci\u00f3n de PHP.<\/p>\n<p>A continuaci\u00f3n, copia el contenido del directorio local \u2014 que contiene el Dockerfile \u2014 en el directorio <strong>\/usr\/src\/myapp<\/strong> dentro del contenedor. Tras establecer el directorio de trabajo en <strong>\/usr\/src\/myapp<\/strong>, especifica el script PHP a ejecutar, <strong>tu-script.php<\/strong>, utilizando el comando <code>php<\/code>.<\/p>\n<p>La imagen contiene muchas extensiones PHP precompiladas. Por tanto, empieza por comprobar si la extensi\u00f3n que necesitas est\u00e1 instalada ejecutando el comando <code>php -m<\/code>.<\/p>\n<p>Si la extensi\u00f3n que necesitas no est\u00e1 disponible en la imagen base, Docker proporciona los siguientes scripts de ayuda para que puedas instalar extensiones adicionales m\u00e1s f\u00e1cilmente:<\/p>\n<ul>\n<li><code>docker-php-ext-configure<\/code><\/li>\n<li><code>docker-php-ext-install<\/code><\/li>\n<li><code>docker-php-ext-enable<\/code><\/li>\n<\/ul>\n<p>Por ejemplo, la aplicaci\u00f3n de demostraci\u00f3n de este tutorial utiliza la extensi\u00f3n <a href=\"https:\/\/www.php.net\/manual\/en\/book.mysqli.php\" target=\"_blank\" rel=\"noopener noreferrer\">MySQLi<\/a> para interactuar con la base de datos MariaDB. Esta extensi\u00f3n no est\u00e1 compilada en la imagen por defecto, as\u00ed que inst\u00e1lala utilizando el siguiente comando en tu Dockerfile:<\/p>\n<pre><code class=\"language-yaml\">RUN docker-php-ext-install mysqli<\/code><\/pre>\n<p>Para escribir un Dockerfile para la aplicaci\u00f3n de demostraci\u00f3n, crea un nuevo archivo llamado <strong>Dockerfile<\/strong> en la carpeta ra\u00edz del proyecto. Pega el siguiente c\u00f3digo en el archivo:<\/p>\n<pre><code class=\"language-yaml\">FROM php:8.3-apache\n\n# Install MySQL client, server, and other dependencies\nRUN apt-get update && \\\n\tapt-get install -y \\\n\tdefault-mysql-client \\\n\tdefault-mysql-server \\\n\tgit \\\n\t&& apt-get clean \\\n\t&& rm -rf \/var\/lib\/apt\/lists\/*\n\n# Install mysqli PHP extension for MySQL support\nRUN docker-php-ext-install mysqli<\/code><\/pre>\n<p>Este c\u00f3digo especifica la <a href=\"https:\/\/hub.docker.com\/_\/php\" target=\"_blank\" rel=\"noopener noreferrer\">imagen oficial de PHP<\/a> \u2014 concretamente la versi\u00f3n 8.3 \u2014 con Apache instalado como imagen base para el contenedor. Esta imagen proporciona un entorno preconfigurado para ejecutar aplicaciones PHP con Apache como servidor web.<\/p>\n<p>A continuaci\u00f3n, instala las dependencias adicionales que requiere la aplicaci\u00f3n de demostraci\u00f3n, incluyendo <code>default-mysql-client<\/code> y <code>default-mysql-server<\/code>, que crean e interact\u00faan con la <a href=\"https:\/\/docs.sevalla.com\/databases\/import-export\/mariadb\">base de datos MariaDB<\/a>.<\/p>\n<p>Por \u00faltimo, el fragmento anterior instala la extensi\u00f3n PHP <code>mysqli<\/code> utilizando <code>docker-php-ext-install<\/code>, que permite a la aplicaci\u00f3n de demostraci\u00f3n establecer una conexi\u00f3n y realizar operaciones en la base de datos MariaDB.<\/p>\n<h2>Gestionar dependencias con Docker<\/h2>\n<p>Gestionar las dependencias de PHP con Docker implica utilizar <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">Composer<\/a>, un popular gestor de dependencias para PHP. Instalando Composer en un contenedor Docker, puedes agilizar el proceso de instalaci\u00f3n, actualizaci\u00f3n y gesti\u00f3n de las dependencias de PHP, facilitando al mismo tiempo la coherencia y reproducibilidad en distintos entornos.<\/p>\n<p>Sigue los pasos que se indican a continuaci\u00f3n para utilizar Composer para la gesti\u00f3n de dependencias dentro de la aplicaci\u00f3n de demostraci\u00f3n. A\u00f1ade el c\u00f3digo de cada uno de los pasos a tu archivo<strong> Dockerfile<\/strong>.<\/p>\n<ol start=\"1\">\n<li>Instala Composer en la imagen Docker utilizando el siguiente comando:\n<pre><code class=\"language-yaml\"># Install Composer\nCOPY --from=composer\/composer:latest-bin \/composer \/usr\/bin\/composer<\/code><\/pre>\n<p>Este comando copia un archivo binario precompilado de Composer del repositorio Docker Hub en tu imagen. <code>--from=composer\/composer:latest-bin<\/code> especifica la imagen de origen desde la que copiar los archivos.<\/p>\n<p>La ruta <code>\/composer<\/code> de la imagen de origen contiene los archivos a copiar, mientras que la ruta <code>\/usr\/bin\/composer<\/code> de tu imagen Docker es el destino de estos archivos.<\/li>\n<li>A continuaci\u00f3n, establece el directorio de trabajo ejecutando lo siguiente:\n<pre><code class=\"language-yaml\"># Set working directory\nWORKDIR \/var\/www\/html<\/code><\/pre>\n<\/li>\n<li>Copia los archivos <strong>composer.json<\/strong> y <strong>composer.lock<\/strong> en la imagen.\n<pre><code class=\"language-yaml\"># Copy composer.json and composer.lock\nCOPY composer.json composer.lock .\/<\/code><\/pre>\n<\/li>\n<li>Instala las dependencias de Composer que aparecen en <strong>composer.json<\/strong>.\n<pre><code class=\"language-yaml\"># Install Composer dependencies\nRUN composer install --no-dev --optimize-autoloader<\/code><\/pre>\n<p><code>--no-dev<\/code> indica a Composer que omita las dependencias espec\u00edficas del desarrollo. <code>--optimize-autoloader<\/code> indica a Composer que optimice el cargador autom\u00e1tico para mejorar el rendimiento.<\/li>\n<\/ol>\n<p>Puedes actualizar y gestionar las dependencias a lo largo del tiempo modificando el archivo <strong>composer.json<\/strong> seg\u00fan sea necesario, a\u00f1adiendo nuevas dependencias, actualizando las restricciones de versi\u00f3n y eliminando las dependencias que ya no sean necesarias.<\/p>\n<p>Tras realizar los cambios necesarios, ejecuta <code>composer install<\/code> o <code>composer update<\/code> dentro del contenedor Docker para instalar o actualizar las dependencias en consecuencia.<\/p>\n<h3>Aplica las configuraciones finales<\/h3>\n<p>Antes de que la aplicaci\u00f3n funcione con Docker, debes crear la base de datos y el usuario de la base de datos, establecer las variables de entorno y copiar los archivos del proyecto en la imagen Docker.<\/p>\n<p>Para ello, sigue los pasos que se indican a continuaci\u00f3n y copia cada fragmento de c\u00f3digo en tu archivo Docker.<\/p>\n<ol start=\"1\">\n<li>Establece las variables de entorno que la aplicaci\u00f3n PHP utilizar\u00e1 para conectarse a la base de datos MariaDB. Puedes sustituir <code>DB_USER<\/code>, <code>DB_PASSWORD<\/code>, y <code>DB_NAME<\/code> por tus credenciales preferidas.\n<pre><code class=\"language-yaml\"># Set environment variables\nENV DB_HOST=localhost \\\n\tDB_USER=kinsta_user \\\n\tDB_PASSWORD=your_password_here \\\n\tDB_NAME=kinsta_docker_auth \\\n\t# Path to the Unix socket file used for connecting to the MariaDB server.\n\tDB_SOCKET=\/var\/run\/mysqld\/mysqld.sock<\/code><\/pre>\n<\/li>\n<li>Copia los archivos de la aplicaci\u00f3n PHP en la imagen Docker:\n<pre><code class=\"language-yaml\"># Copy PHP application files into the image\nCOPY . .<\/code><\/pre>\n<\/li>\n<li>Copia el script de inicio en la imagen:\n<pre><code class=\"language-yaml\"># Copy the startup script\nCOPY scripts\/start.sh \/usr\/local\/bin\/start.sh<\/code><\/pre>\n<p>Este script se ejecuta cuando se inicia el contenedor y es responsable de iniciar el servidor de base de datos, crear una base de datos, una tabla y un usuario, e iniciar el servidor Apache. Crear\u00e1s este script m\u00e1s adelante.<\/li>\n<li>Haz que el script sea ejecutable utilizando el comando <code><a href=\"https:\/\/www.geeksforgeeks.org\/chmod-command-linux\/\" target=\"_blank\" rel=\"noopener noreferrer\">chmod<\/a><\/code>:\n<pre><code class=\"language-yaml\"># Make the script executable\nRUN chmod +x \/usr\/local\/bin\/start.sh<\/code><\/pre>\n<\/li>\n<li>Por \u00faltimo, ejecuta el script utilizando el siguiente comando:\n<pre><code class=\"language-yaml\"># Execute the startup script\nCMD [\"\/usr\/local\/bin\/start.sh\"]<\/code><\/pre>\n<\/li>\n<\/ol>\n<p>Ahora que el Dockerfile est\u00e1 completo, crea el script de inicio del que hemos hablado antes.<\/p>\n<p>Crea un nuevo archivo llamado <strong>scripts\/start.sh<\/strong> en la carpeta ra\u00edz del proyecto y a\u00f1ade el siguiente c\u00f3digo. Aseg\u00farate de utilizar las credenciales de la base de datos que definiste en el Dockerfile.<\/p>\n<pre><code class=\"language-bash\">#!\/bin\/bash\n\n# Start MariaDB server\nservice mariadb start\n\n# Wait for MariaDB to be fully initialized (retry up to 30 times, waiting 1  second between each attempt)\nattempt=0\nwhile [ $attempt -lt 30 ]; do\n\t\tif mysqladmin ping &&gt;\/dev\/null; then\n    \t\techo \"MariaDB is up and running.\"\n    \t\tbreak\n\t\telse\n    \t\techo \"MariaDB is not yet available. Retrying...\"\n    \t\tattempt=$((attempt+1))\n    \t\tsleep 1\n\t\tFi\ndone\n\n# If MariaDB failed to start within the specified attempts, exit with an error\nif [ $attempt -eq 30 ]; then\n\t\techo \"Error: MariaDB failed to start within the specified time.\"\n\t\texit 1\nfi\n\n# Set the database name, username, and password\ndbname=\"kinsta_docker_auth\"\ndbuser=\"kinsta_user\"\ndbpassword=\"your_password_here\"\n\n# Create the database if it does not exist\nmysql -u root -e \"CREATE DATABASE IF NOT EXISTS $dbname;\"\n\n# Create a database user and assign privileges to the database\nmysql -u root -e \"CREATE USER '$dbuser'@'localhost' IDENTIFIED BY '$dbpassword';\"\nmysql -u root -e \"GRANT ALL PRIVILEGES ON $dbname.* TO '$dbuser'@'localhost';\"\nmysql -u root -e \"FLUSH PRIVILEGES;\"\n\n# Create users table if it does not exist\nmysql -u root -e \"USE $dbname; CREATE TABLE IF NOT EXISTS users (\n\t\tid INT AUTO_INCREMENT PRIMARY KEY,\n\t\tusername VARCHAR(20) UNIQUE NOT NULL,\n\t\tpassword_hash VARCHAR(255) NOT NULL\n);\"\n\n# Start Apache server\napache2ctl -D FOREGROUND<\/code><\/pre>\n<p>Este <a href=\"https:\/\/kinsta.com\/es\/blog\/lenguajes-script\/#8-bash\">script Bash<\/a> inicia el servidor MariaDB. Despu\u00e9s, cuando el servidor est\u00e1 totalmente inicializado, crea una base de datos, un usuario con los privilegios adecuados y una tabla dentro de la base de datos. Por \u00faltimo, inicia el servidor Apache.<\/p>\n<h2>Despliegue en Kinsta<\/h2>\n<p>Antes de desplegar tu aplicaci\u00f3n en Kinsta, debes establecer algunas configuraciones para el servidor Apache. El servicio de <a href=\"https:\/\/sevalla.com\/application-hosting\/\">Alojamiento de Aplicaciones<\/a> de Kinsta tiene abiertos los puertos <code>80<\/code> y <code>443<\/code>, pero te recomendamos que utilices el puerto <code>8080<\/code> si tu aplicaci\u00f3n expone alg\u00fan puerto.<\/p>\n<p>Por defecto, el servidor Apache escucha conexiones en el puerto <code>80<\/code>, por lo que debes configurarlo para que escuche conexiones en el puerto <code>8080<\/code>. Para ello, sigue estos pasos:<\/p>\n<ol start=\"1\">\n<li>Crea una carpeta llamada <strong>apache-conf<\/strong> en la carpeta ra\u00edz del proyecto.<\/li>\n<li>En la carpeta reci\u00e9n creada, crea un archivo llamado <strong>apache-config.conf<\/strong>. A\u00f1ade el c\u00f3digo siguiente para configurar Apache para que escuche conexiones en el puerto 8080:\n<pre><code class=\"language-bash\">&lt;VirtualHost *:8080&gt;\n\tServerAdmin webmaster@localhost\n\tDocumentRoot \/var\/www\/html\n\n\tErrorLog ${APACHE_LOG_DIR}\/error.log\n\tCustomLog ${APACHE_LOG_DIR}\/access.log combined\n&lt;\/VirtualHost&gt;<\/code><\/pre>\n<\/li>\n<li>En la carpeta <strong>apache-conf<\/strong>, crea un nuevo archivo llamado <strong>apache-ports.conf<\/strong> y a\u00f1ade el c\u00f3digo que aparece a continuaci\u00f3n.\n<pre><code class=\"language-bash\"># Change the Listen directive to listen on port 8080\nListen 8080\n\n# Keep the existing configuration for port 443\n&lt;IfModule ssl_module&gt;\n\tListen 443\n&lt;\/IfModule&gt;\n\n&lt;IfModule mod_gnutls.c&gt;\n\tListen 443\n&lt;\/IfModule&gt;<\/code><\/pre>\n<p>La directiva <code>Listen 8080<\/code> indica a Apache que escuche las conexiones entrantes en el puerto 8080.<\/li>\n<li>Ahora, tienes que modificar el Dockerfile para aplicar esta configuraci\u00f3n al servidor Apache. En el Dockerfile, a\u00f1ade estos comandos justo despu\u00e9s del comando para establecer el directorio de trabajo (<code>WORKDIR \/var\/www\/html<\/code>). \u00c9stos se encargan de copiar los archivos de configuraci\u00f3n personalizados en los directorios apropiados.\n<pre><code class=\"language-yaml\"># Set up Apache virtual host\nCOPY apache-conf\/apache-config.conf \/etc\/apache2\/sites-available\/000-default.conf\n\n# Set up Apache ports\nCOPY apache-conf\/apache-ports.conf \/etc\/apache2\/ports.conf<\/code><\/pre>\n<\/li>\n<li>Por \u00faltimo, crea un archivo <strong>.dockerignore<\/strong> en la carpeta ra\u00edz del proyecto. Este archivo contiene una lista de carpetas y archivos que no deben copiarse en la imagen Docker. A\u00f1ade <code>vendor<\/code> para excluir la carpeta <strong>vendor<\/strong>.<\/li>\n<\/ol>\n<p>Con todas las configuraciones hechas, puedes desplegar en Kinsta. Sube los archivos de tu proyecto a tu proveedor Git preferido (<a href=\"https:\/\/docs.sevalla.com\/applications\/git\/bitbucket#grant-access-to-the-kinsta-bitbucket-application\">Bitbucket<\/a>, <a href=\"https:\/\/docs.sevalla.com\/applications\/git\/github#authenticate-and-authorize\">GitHub<\/a> o <a href=\"https:\/\/docs.sevalla.com\/applications\/git\/gitlab#authorize-the-kinsta-gitlab-application\">GitLab<\/a>) y sigue los pasos que se indican a continuaci\u00f3n.<\/p>\n<ol start=\"1\">\n<li>En tu <a href=\"https:\/\/my.kinsta.com\/?lang=es\" target=\"_blank\" rel=\"noopener noreferrer\">panel MyKinsta<\/a>, selecciona <strong>Aplicaciones<\/strong> en la barra lateral y haz clic en el bot\u00f3n <strong>A\u00f1adir aplicaci\u00f3n<\/strong>.<\/li>\n<li>En la p\u00e1gina <strong>A\u00f1adir aplicaci\u00f3n<\/strong>, selecciona tu repositorio Git y tu rama, proporciona un nombre para la aplicaci\u00f3n, elige una ubicaci\u00f3n para el centro de datos y haz clic en <strong>Continuar<\/strong>.<\/li>\n<li>En la p\u00e1gina <strong>Entorno de construcci\u00f3n <\/strong>, selecciona <strong>Utilizar Dockerfile para configurar la imagen del contenedor<\/strong>. Proporciona \u00abDockerfile\u00bb como <strong>ruta Dockerfile<\/strong> y un per\u00edodo (\u00ab.\u00bb) como <strong>Contexto<\/strong>. Haz clic en <strong>Continuar<\/strong>.\n<p><figure style=\"width: 1001px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2024\/04\/build-environment.png\" alt=\"Las opciones del entorno de construcci\u00f3n, selecciona la opci\u00f3n Dockerfile y especifica su ruta de archivo\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">Secci\u00f3n Entorno de construcci\u00f3n del formulario A\u00f1adir aplicaci\u00f3n.<\/figcaption><\/figure><\/li>\n<li>Deja todo en la p\u00e1gina <strong>Configura tus procesos<\/strong> y haz clic en <strong>Continuar<\/strong><strong>. Nota<\/strong>: La base de datos perder\u00e1 datos cuando reinicies o vuelvas a desplegar la aplicaci\u00f3n. Si necesitas solucionar este problema, consulta el <a href=\"https:\/\/docs.sevalla.com\/applications\/storage\">almacenamiento persistente<\/a> de Kinsta y apl\u00edcalo en esta p\u00e1gina. Esta gu\u00eda no revisar\u00e1 la configuraci\u00f3n del almacenamiento persistente.<\/li>\n<li>Confirma los detalles del pago en la p\u00e1gina <strong>Resumen<\/strong> y haz clic en <strong>Desplegar ahora<\/strong>.<\/li>\n<li>Una vez completado el despliegue, abre el dominio de tu aplicaci\u00f3n para ver el sitio en producci\u00f3n.\n<figure style=\"width: 1001px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2024\/04\/live-site.png\" alt=\"La p\u00e1gina de inicio de sesi\u00f3n del sitio en producci\u00f3n con campos para el nombre de usuario y la contrase\u00f1a\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">P\u00e1gina de inicio de sesi\u00f3n en el sitio web en producci\u00f3n.<\/figcaption><\/figure>\n<p>Reg\u00edstrate para obtener una cuenta, inicia sesi\u00f3n con tus datos y comprueba que puedes acceder a la p\u00e1gina protegida y que todo funciona como se espera.<\/p>\n<p><figure style=\"width: 1001px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2024\/04\/login-homepage.png\" alt=\"La p\u00e1gina de inicio de la aplicaci\u00f3n del usuario conectado se abre con un mensaje de bienvenida personalizado\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">La p\u00e1gina de inicio de la aplicaci\u00f3n una vez iniciada la sesi\u00f3n.<\/figcaption><\/figure><\/li>\n<\/ol>\n<h2>Monitoriza y optimiza tu aplicaci\u00f3n<\/h2>\n<p>Una vez que tu aplicaci\u00f3n est\u00e9 en funcionamiento en Kinsta, es esencial supervisar y optimizar su rendimiento. Garantiza que tu aplicaci\u00f3n funcione sin problemas y utilice los recursos de forma eficiente.<\/p>\n<p>Optimizar el rendimiento de tu aplicaci\u00f3n es crucial para ofrecer una experiencia de usuario r\u00e1pida y receptiva.<\/p>\n<p>Kinsta siempre est\u00e1 buscando formas de <a href=\"https:\/\/kinsta.com\/es\/blog\/rendimiento-de-wordpress\/\">optimizar el rendimiento de tu aplicaci\u00f3n<\/a>. Ofrecemos completas herramientas de monitorizaci\u00f3n para ayudarte a realizar un seguimiento de diversas m\u00e9tricas de rendimiento, como el ancho de banda, el tiempo total de compilaci\u00f3n, el uso de la CPU, el consumo de memoria, el tr\u00e1fico de red y los tiempos de respuesta. Puedes ver toda esta informaci\u00f3n navegando a la secci\u00f3n <strong>Anal\u00edticas<\/strong>\u00a0de tu aplicaci\u00f3n en el panel de control de Kinsta.<\/p>\n<p>Si te encuentras con un problema o un comportamiento inesperado de la aplicaci\u00f3n, puedes ir a la secci\u00f3n <strong>Registros<\/strong> del panel de control de Kinsta. Su visi\u00f3n detallada del rendimiento y comportamiento de tu aplicaci\u00f3n incluye registros de errores y accesos.<\/p>\n<p>Al revisar meticulosamente estos registros, puedes obtener informaci\u00f3n valiosa sobre lo que podr\u00eda estar causando el problema, como mensajes de error, stack traces o patrones de comportamiento anormal. Esta informaci\u00f3n puede ayudarte a diagnosticar la causa ra\u00edz del problema y a tomar las medidas adecuadas para resolverlo.<\/p>\n<p>Adem\u00e1s, puedes aprovechar las t\u00e9cnicas de optimizaci\u00f3n del rendimiento en tu entorno Docker, como la optimizaci\u00f3n de las im\u00e1genes Docker y la aplicaci\u00f3n de las mejores pr\u00e1cticas para la arquitectura de aplicaciones y la optimizaci\u00f3n del c\u00f3digo.<\/p>\n<h2>Resumen<\/h2>\n<p>Los contenedores ligeros y port\u00e1tiles de Docker facilitan el empaquetado y despliegue de aplicaciones con todas las dependencias necesarias, independientemente de la infraestructura subyacente. Al contenerizar tu aplicaci\u00f3n y sus dependencias, fomentas la coherencia entre distintos entornos, agilizas los procesos de configuraci\u00f3n y obtienes un mejor control de las versiones.<\/p>\n<p>Aprovechar Docker con Kinsta mejora el proceso de despliegue de tu aplicaci\u00f3n. Su compatibilidad con archivos Docker personalizados y una amplia gama de lenguajes de programaci\u00f3n, incluido PHP, garantiza la compatibilidad y flexibilidad de tus proyectos.<\/p>\n<p>Con la <a href=\"https:\/\/docs.sevalla.com\/applications\/get-started\/infrastructure\">infraestructura del Alojamiento de Aplicaciones<\/a> y la tecnolog\u00eda de contenedorizaci\u00f3n de Docker, puedes conseguir un despliegue optimizado, escalabilidad y fiabilidad para tus aplicaciones.<\/p>\n<p><em>\u00bfHas utilizado antes Docker para tu proyecto? \u00bfTienes alguna experiencia o idea sobre Docker? \u00a1Comp\u00e1rtelas en los comentarios m\u00e1s abajo!<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Docker es una popular plataforma de c\u00f3digo abierto para desarrollar, enviar y ejecutar aplicaciones. Encapsula las aplicaciones y sus dependencias en contenedores para promover la coherencia &#8230;<\/p>\n","protected":false},"author":199,"featured_media":74580,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[1282,1316],"class_list":["post-74579","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-docker","topic-funcion-php"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>C\u00f3mo instalar dependencias y extensiones de PHP con Docker - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Simplifica tu flujo de trabajo de desarrollo aprendiendo a instalar dependencias y extensiones PHP dentro de contenedores Docker.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/es\/blog\/instalar-docker-php-ext\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"C\u00f3mo instalar dependencias y extensiones de PHP con Docker\" \/>\n<meta property=\"og:description\" content=\"Simplifica tu flujo de trabajo de desarrollo aprendiendo a instalar dependencias y extensiones PHP dentro de contenedores Docker.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/es\/blog\/instalar-docker-php-ext\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinsta.es\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-04-16T14:15:24+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-25T09:29:21+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/04\/wp-how-to-install-php-dependencies-and-extensions-with-docker.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"730\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Jeremy Holcombe\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Simplifica tu flujo de trabajo de desarrollo aprendiendo a instalar dependencias y extensiones PHP dentro de contenedores Docker.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/04\/wp-how-to-install-php-dependencies-and-extensions-with-docker-1024x512.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@Kinsta_ES\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_ES\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jeremy Holcombe\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"15 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/instalar-docker-php-ext\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/instalar-docker-php-ext\/\"},\"author\":{\"name\":\"Jeremy Holcombe\",\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21\"},\"headline\":\"C\u00f3mo instalar dependencias y extensiones de PHP con Docker\",\"datePublished\":\"2024-04-16T14:15:24+00:00\",\"dateModified\":\"2024-04-25T09:29:21+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/instalar-docker-php-ext\/\"},\"wordCount\":2431,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/es\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/instalar-docker-php-ext\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/04\/wp-how-to-install-php-dependencies-and-extensions-with-docker.jpg\",\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/es\/blog\/instalar-docker-php-ext\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/instalar-docker-php-ext\/\",\"url\":\"https:\/\/kinsta.com\/es\/blog\/instalar-docker-php-ext\/\",\"name\":\"C\u00f3mo instalar dependencias y extensiones de PHP con Docker - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/es\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/instalar-docker-php-ext\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/instalar-docker-php-ext\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/04\/wp-how-to-install-php-dependencies-and-extensions-with-docker.jpg\",\"datePublished\":\"2024-04-16T14:15:24+00:00\",\"dateModified\":\"2024-04-25T09:29:21+00:00\",\"description\":\"Simplifica tu flujo de trabajo de desarrollo aprendiendo a instalar dependencias y extensiones PHP dentro de contenedores Docker.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/instalar-docker-php-ext\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/es\/blog\/instalar-docker-php-ext\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/instalar-docker-php-ext\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/04\/wp-how-to-install-php-dependencies-and-extensions-with-docker.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/04\/wp-how-to-install-php-dependencies-and-extensions-with-docker.jpg\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/instalar-docker-php-ext\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/es\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Docker\",\"item\":\"https:\/\/kinsta.com\/es\/secciones\/docker\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"C\u00f3mo instalar dependencias y extensiones de PHP con Docker\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/es\/#website\",\"url\":\"https:\/\/kinsta.com\/es\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Soluciones de alojamiento premium, r\u00e1pidas y seguras\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/es\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/es\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/es\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/es\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinsta.es\/\",\"https:\/\/x.com\/Kinsta_ES\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21\",\"name\":\"Jeremy Holcombe\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g\",\"caption\":\"Jeremy Holcombe\"},\"description\":\"Senior Editor at Kinsta, WordPress Web Developer, and Content Writer. Outside of all things WordPress, I enjoy the beach, golf, and movies. I also have tall people problems.\",\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/jeremyholcombe\/\"],\"url\":\"https:\/\/kinsta.com\/es\/blog\/author\/jeremyholcombe\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"C\u00f3mo instalar dependencias y extensiones de PHP con Docker - Kinsta\u00ae","description":"Simplifica tu flujo de trabajo de desarrollo aprendiendo a instalar dependencias y extensiones PHP dentro de contenedores Docker.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/es\/blog\/instalar-docker-php-ext\/","og_locale":"es_ES","og_type":"article","og_title":"C\u00f3mo instalar dependencias y extensiones de PHP con Docker","og_description":"Simplifica tu flujo de trabajo de desarrollo aprendiendo a instalar dependencias y extensiones PHP dentro de contenedores Docker.","og_url":"https:\/\/kinsta.com\/es\/blog\/instalar-docker-php-ext\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinsta.es\/","article_published_time":"2024-04-16T14:15:24+00:00","article_modified_time":"2024-04-25T09:29:21+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/04\/wp-how-to-install-php-dependencies-and-extensions-with-docker.jpg","type":"image\/jpeg"}],"author":"Jeremy Holcombe","twitter_card":"summary_large_image","twitter_description":"Simplifica tu flujo de trabajo de desarrollo aprendiendo a instalar dependencias y extensiones PHP dentro de contenedores Docker.","twitter_image":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/04\/wp-how-to-install-php-dependencies-and-extensions-with-docker-1024x512.jpg","twitter_creator":"@Kinsta_ES","twitter_site":"@Kinsta_ES","twitter_misc":{"Escrito por":"Jeremy Holcombe","Tiempo de lectura":"15 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/es\/blog\/instalar-docker-php-ext\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/es\/blog\/instalar-docker-php-ext\/"},"author":{"name":"Jeremy Holcombe","@id":"https:\/\/kinsta.com\/es\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21"},"headline":"C\u00f3mo instalar dependencias y extensiones de PHP con Docker","datePublished":"2024-04-16T14:15:24+00:00","dateModified":"2024-04-25T09:29:21+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/es\/blog\/instalar-docker-php-ext\/"},"wordCount":2431,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/es\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/es\/blog\/instalar-docker-php-ext\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/04\/wp-how-to-install-php-dependencies-and-extensions-with-docker.jpg","inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/es\/blog\/instalar-docker-php-ext\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/es\/blog\/instalar-docker-php-ext\/","url":"https:\/\/kinsta.com\/es\/blog\/instalar-docker-php-ext\/","name":"C\u00f3mo instalar dependencias y extensiones de PHP con Docker - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinsta.com\/es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/es\/blog\/instalar-docker-php-ext\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/es\/blog\/instalar-docker-php-ext\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/04\/wp-how-to-install-php-dependencies-and-extensions-with-docker.jpg","datePublished":"2024-04-16T14:15:24+00:00","dateModified":"2024-04-25T09:29:21+00:00","description":"Simplifica tu flujo de trabajo de desarrollo aprendiendo a instalar dependencias y extensiones PHP dentro de contenedores Docker.","breadcrumb":{"@id":"https:\/\/kinsta.com\/es\/blog\/instalar-docker-php-ext\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/es\/blog\/instalar-docker-php-ext\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinsta.com\/es\/blog\/instalar-docker-php-ext\/#primaryimage","url":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/04\/wp-how-to-install-php-dependencies-and-extensions-with-docker.jpg","contentUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/04\/wp-how-to-install-php-dependencies-and-extensions-with-docker.jpg","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/es\/blog\/instalar-docker-php-ext\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/es\/"},{"@type":"ListItem","position":2,"name":"Docker","item":"https:\/\/kinsta.com\/es\/secciones\/docker\/"},{"@type":"ListItem","position":3,"name":"C\u00f3mo instalar dependencias y extensiones de PHP con Docker"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/es\/#website","url":"https:\/\/kinsta.com\/es\/","name":"Kinsta\u00ae","description":"Soluciones de alojamiento premium, r\u00e1pidas y seguras","publisher":{"@id":"https:\/\/kinsta.com\/es\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/es\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/es\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/es\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinsta.es\/","https:\/\/x.com\/Kinsta_ES","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/es\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21","name":"Jeremy Holcombe","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinsta.com\/es\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g","caption":"Jeremy Holcombe"},"description":"Senior Editor at Kinsta, WordPress Web Developer, and Content Writer. Outside of all things WordPress, I enjoy the beach, golf, and movies. I also have tall people problems.","sameAs":["https:\/\/www.linkedin.com\/in\/jeremyholcombe\/"],"url":"https:\/\/kinsta.com\/es\/blog\/author\/jeremyholcombe\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts\/74579","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/users\/199"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/comments?post=74579"}],"version-history":[{"count":7,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts\/74579\/revisions"}],"predecessor-version":[{"id":74719,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts\/74579\/revisions\/74719"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/74579\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/74579\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/74579\/translations\/pt"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/74579\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/74579\/translations\/jp"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/74579\/translations\/es"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/74579\/translations\/fr"},{"href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/74579\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/media\/74580"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/media?parent=74579"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/tags?post=74579"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/topic?post=74579"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}