{"id":3744,"date":"2017-06-13T07:15:01","date_gmt":"2017-06-13T14:15:01","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=3744"},"modified":"2025-06-13T21:28:57","modified_gmt":"2025-06-14T04:28:57","slug":"deploy-php-couchbase-application-docker-containers","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/deploy-php-couchbase-application-docker-containers\/","title":{"rendered":"Desplegar una aplicaci\u00f3n PHP con Couchbase como contenedores Docker"},"content":{"rendered":"<p>A principios de a\u00f1o escrib\u00ed sobre la contenedorizaci\u00f3n de aplicaciones escritas en varias tecnolog\u00edas de desarrollo que se comunican con Couchbase Server. Por ejemplo, hab\u00eda escrito sobre el despliegue de una aplicaci\u00f3n <a href=\"https:\/\/www.couchbase.com\/blog\/es\/deploy-golang-web-application-couchbase-docker-containers\/\" target=\"_blank\" rel=\"noopener noreferrer\">Aplicaci\u00f3n Golang con Docker<\/a>, a <a href=\"https:\/\/www.couchbase.com\/blog\/es\/docker-deploy-containerized-java-couchbase-web-application\/\" target=\"_blank\" rel=\"noopener noreferrer\">Aplicaci\u00f3n Java con Docker<\/a>y un <a href=\"https:\/\/www.couchbase.com\/blog\/es\/deploy-node-js-couchbase-web-application-docker-containers\/\" target=\"_blank\" rel=\"noopener noreferrer\">Aplicaci\u00f3n Node.js con Docker<\/a>. Esta vez vamos a echar un vistazo a c\u00f3mo desplegar un contenedor PHP que se comunica con un contenedor Couchbase Server.<\/p>\n<p>Vamos a crear un nodo Couchbase aprovisionado autom\u00e1ticamente y una aplicaci\u00f3n PHP simplista que escriba y lea datos del nodo NoSQL de Couchbase.<\/p>\n<p><!--more--><\/p>\n<p>Definamos primero la estructura del proyecto que representar\u00e1 a ambos contenedores:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">ra\u00edz\r\n-- couchbase\r\n-- configure.sh\r\n-- Dockerfile\r\n-- php\r\n-- -- aplicaci\u00f3n\r\n-- -- index.php\r\n-- -- configuraci\u00f3n\r\n-- -- php.ini\r\n-- -- Dockerfile\r\n-- docker-compose.yml<\/pre>\n<p>Cada contenedor tendr\u00e1 su propio\u00a0<code><\/code><strong>Dockerfile<\/strong> que contendr\u00e1 la informaci\u00f3n del plano para nuestra configuraci\u00f3n. En\u00a0<strong>docker-compose.yml<\/strong> crear\u00e1 y desplegar\u00e1 los contenedores utilizando la informaci\u00f3n definida sobre puertos y variables de entorno.<\/p>\n<h2>Contenedor de la aplicaci\u00f3n PHP<\/h2>\n<p>Dado que este es un tutorial de PHP, comenzaremos por construir nuestra aplicaci\u00f3n PHP simple y contenerizarla. Debido a que queremos automatizar el despliegue, desarrollaremos nuestra aplicaci\u00f3n\u00a0<strong>php.ini<\/strong> y copiarlo durante el proceso de compilaci\u00f3n.<\/p>\n<p>Antes de llegar a esa parte, vamos a a\u00f1adir algo de c\u00f3digo a la secci\u00f3n\u00a0<strong>index.php<\/strong> file:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">openBucket(getenv(\"COUCHBASE_BUCKET_NAME\"), getenv(\"COUCHBASE_BUCKET_PASSWORD\"));\r\n\r\n    try {\r\n        $result = $bucket-&gt;get(\"nraboy\");\r\n    } catch (CouchbaseException $e) {\r\n        $bucket-&gt;insert(\"nraboy\", array(\r\n            \"name\" =&gt; \"Nic Raboy\",\r\n            \"social_media\" =&gt; array(\r\n                \"twitter\" =&gt; \"https:\/\/www.twitter.com\/nraboy\",\r\n                \"website\" =&gt; \"https:\/\/www.thepolyglotdeveloper.com\"\r\n            )\r\n        ));\r\n        $result = $bucket-&gt;get(\"nraboy\");\r\n    }\r\n    echo json_encode($result-&gt;value);\r\n\r\n?&gt;<\/pre>\n<p>En el c\u00f3digo anterior estamos diciendo que cualquier dato impreso ser\u00e1 en formato JSON. Estamos estableciendo una conexi\u00f3n con un cluster de Couchbase y abriendo un Bucket particular en ese cluster. El problema es que estamos usando variables de entorno para definir el cluster y el Bucket. Estas se establecer\u00e1n en el proceso de despliegue.<\/p>\n<p>Con la aplicaci\u00f3n conectada, se intentar\u00e1 obtener un documento de Couchbase por clave. Si ese documento no existe, ser\u00e1 creado y luego obtenido. El documento obtenido se imprimir\u00e1 como resultado.<\/p>\n<p>Como he mencionado antes, se trata de una aplicaci\u00f3n sencilla, nada del otro mundo. Ahora podemos centrarnos en el aspecto Docker de esta aplicaci\u00f3n.<\/p>\n<p>Abra el\u00a0<strong>Dockerfile<\/strong> e incluyen lo siguiente:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">DESDE php:5.6.30-apache\r\n\r\nEJECUTAR apt-get update\r\nEJECUTAR apt-get install -y wget lsb-release\r\nEJECUTAR wget https:\/\/packages.couchbase.com\/releases\/couchbase-release\/couchbase-release-1.0-2-amd64.deb\r\nEJECUTAR dpkg -i couchbase-release-1.0-2-amd64.deb\r\nRUN rm couchbase-release-1.0-2-amd64.deb\r\nEJECUTAR apt-get update\r\nRUN apt-get install -y libcouchbase-dev build-essential php5-dev zlib1g-dev\r\nRUN pecl install pcs-1.3.3\r\nRUN pecl install couchbase\r\n\r\nWORKDIR \/var\/www\/html\r\n\r\nCOPIAR .\/configuration\/php.ini \/usr\/local\/etc\/php\/\r\nCOPIAR .\/application\/ \/var\/www\/html\/\r\n\r\nEJECUTAR chown www-data:www-data . -R<\/pre>\n<p>Lo anterior dice que vamos a usar una imagen de Apache. Si alguna vez has usado Couchbase con PHP, lo que viene a continuaci\u00f3n te resultar\u00e1 muy familiar. Toda la recopilaci\u00f3n de dependencias fue tomada directamente del archivo <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/current\/sdk\/php\/start-using-sdk.html\" target=\"_blank\" rel=\"noopener noreferrer\">Documentaci\u00f3n PHP de Couchbase<\/a>. En\u00a0<code>RUN<\/code> significa que las dependencias se recopilar\u00e1n en tiempo de compilaci\u00f3n, no en tiempo de ejecuci\u00f3n.<\/p>\n<p>Con las dependencias disponibles, el\u00a0<strong>php.ini<\/strong> se copia en la imagen, as\u00ed como el archivo\u00a0<strong>index.php<\/strong> archivo. Esto nos lleva al\u00a0<strong>php.ini<\/strong> archivo.<\/p>\n<p>En lugar de pegar un largo y desagradable trozo de configuraci\u00f3n, lo mejor es que te descargues el archivo\u00a0<strong>php.ini<\/strong> del archivo oficial <a href=\"https:\/\/github.com\/php\/php-src\/blob\/master\/php.ini-production\" target=\"_blank\" rel=\"noopener noreferrer\">Repositorio PHP GitHub<\/a>. El \u00fanico cambio que introducimos se refiere a las extensiones. Seg\u00fan el <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/current\/sdk\/php\/start-using-sdk.html\" target=\"_blank\" rel=\"noopener noreferrer\">Documentaci\u00f3n PHP de Couchbase<\/a>tenemos que a\u00f1adir lo siguiente:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">extension=couchbase.so<\/pre>\n<p>Busca la secci\u00f3n de extensiones y a\u00f1\u00e1dela all\u00ed.<\/p>\n<p>En este punto la imagen PHP puede ser construida y podemos desplegarla como un contenedor. Sin embargo, vamos a planificar con antelaci\u00f3n y crear un archivo Compose.<\/p>\n<p>Abra el\u00a0<strong>docker-compose.yml<\/strong> e incluya lo siguiente:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">versi\u00f3n: \"2\r\n\r\nservicios:\r\n\r\n    php:\r\n        build: .\/php\r\n        puertos:\r\n            - 8080:80\r\n        entorno:\r\n            - COUCHBASE_HOST=couchbase\r\n            - COUCHBASE_BUCKET_NAME=por defecto\r\n            - COUCHBASE_BUCKET_CONTRASE\u00d1A=\r\n        reinicio: siempre<\/pre>\n<p>Lo anterior define un servicio llamado\u00a0<code>php<\/code> con mapeos de puertos y variables de entorno. Estas variables coinciden con las que tenemos en la aplicaci\u00f3n PHP. La imagen se construir\u00e1 a partir del\u00a0<strong>Dockerfile<\/strong> que se encuentra en el proyecto PHP.<\/p>\n<p>Si ajusta el\u00a0<code>COUCHBASE_HOST<\/code> a algo remoto, estamos listos, pero para este ejemplo vamos a utilizar otro contenedor.<\/p>\n<h2>Contenedorizaci\u00f3n de Couchbase Server<\/h2>\n<p>El objetivo de contenerizar Couchbase es que vamos a automatizarlo. Ya existe una imagen Docker para Couchbase, pero no est\u00e1 pre-aprovisionada, lo que puede llevar tiempo durante el proceso de despliegue.<\/p>\n<p>Abra el\u00a0<strong>Dockerfile<\/strong> el proyecto Couchbase e incluya lo siguiente:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">DESDE couchbase\r\n\r\nCOPIAR configure.sh \/opt\/couchbase\r\n\r\nCMD [\"\/opt\/couchbase\/configure.sh\"]<\/pre>\n<p>Lo anterior dice que vamos a utilizar la imagen oficial de Couchbase, pero vamos a copiar un script en ella y luego ejecutarlo en tiempo de ejecuci\u00f3n. Este script aprovisionar\u00e1 la instancia autom\u00e1ticamente.<\/p>\n<p>Abra el\u00a0<strong>configure.sh<\/strong> e incluya los siguientes comandos:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">set -m\r\n\r\n\/entrypoint.sh couchbase-server &amp;\r\n\r\nsleep 15\r\n\r\ncurl -v -X POST https:\/\/127.0.0.1:8091\/pools\/default -d memoryQuota=512 -d indexMemoryQuota=512\r\n\r\ncurl -v https:\/\/127.0.0.1:8091\/node\/controller\/setupServices -d services=kv%2cn1ql%2Cindex\r\n\r\ncurl -v https:\/\/127.0.0.1:8091\/settings\/web -d port=8091 -d username=$COUCHBASE_ADMINISTRATOR_USERNAME -d password=$COUCHBASE_ADMINISTRATOR_PASSWORD\r\n\r\ncurl -i -u $COUCHBASE_ADMINISTRATOR_USERNAME:$COUCHBASE_ADMINISTRATOR_PASSWORD -X POST https:\/\/127.0.0.1:8091\/settings\/indexes -d 'storageMode=memory_optimized'\r\n\r\ncurl -v -u $COUCHBASE_ADMINISTRATOR_USERNAME:$COUCHBASE_ADMINISTRATOR_PASSWORD -X POST https:\/\/127.0.0.1:8091\/pools\/default\/buckets -d name=$COUCHBASE_BUCKET -d bucketType=couchbase -d ramQuotaMB=128 -d authType=sasl -d saslPassword=$COUCHBASE_BUCKET_PASSWORD\r\n\r\nsleep 15\r\n\r\ncurl -v https:\/\/127.0.0.1:8093\/query\/service -d \"statement=CREATE PRIMARY INDEX ON `$COUCHBASE_BUCKET`\"\r\n\r\nfg 1<\/pre>\n<p>Couchbase Server tiene su propia API RESTful que estamos tratando de consumir con un mont\u00f3n de comandos cURL. Estamos definiendo cuotas de memoria, qu\u00e9 servicios existen en el nodo e informaci\u00f3n de autenticaci\u00f3n.<\/p>\n<p>Observe que muchos de los comandos incluyen variables de entorno como\u00a0<code>$COUCHBASE_ADMINISTRATOR_USERNAME<\/code>. Esto se debe a que vamos a pasarlos a trav\u00e9s de la funci\u00f3n\u00a0<strong>docker-compose.yml<\/strong> igual que hicimos con la aplicaci\u00f3n PHP.<\/p>\n<p>Abra el\u00a0<strong>docker-compose.yml<\/strong> y que tenga el siguiente aspecto:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">versi\u00f3n: \"2\r\n\r\nservicios:\r\n\r\n    couchbase:\r\n        build: .\/couchbase\r\n        puertos:\r\n            - 8091:8091\r\n            - 8092:8092\r\n            - 8093:8093\r\n        entorno:\r\n            - COUCHBASE_ADMINISTRATOR_USERNAME=Administrador\r\n            - COUCHBASE_ADMINISTRATOR_PASSWORD=contrase\u00f1a\r\n            - COUCHBASE_BUCKET=por defecto\r\n            - COUCHBASE_BUCKET_PASSWORD=CONTRASE\u00d1A\r\n\r\n    php:\r\n        build: .\/php\r\n        puertos:\r\n            - 8080:80\r\n        entorno:\r\n            - COUCHBASE_HOST=couchbase\r\n            - COUCHBASE_BUCKET_NAME=por defecto\r\n            - COUCHBASE_BUCKET_CONTRASE\u00d1A=\r\n        reinicio: siempre<\/pre>\n<p>Hemos incluido otro servicio llamado\u00a0<code>couchbase<\/code> con un mont\u00f3n de asignaciones de puertos y variables de entorno. Hay algo importante a tener en cuenta aqu\u00ed. Recuerde que el\u00a0<code>COUCHBASE_HOST<\/code> en la secci\u00f3n PHP? Tiene un host que debe coincidir con el nombre de servicio de nuestra base de datos que es\u00a0<code>couchbase<\/code>.<\/p>\n<h2>Despliegue de contenedores con Docker<\/h2>\n<p>Con la base en su lugar, es hora de desplegar los dos contenedores para que tengamos un conjunto funcional de microservicios.<\/p>\n<p>Desde la CLI de Docker, ejecute lo siguiente:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">docker-compose run -d --service-ports --name couchbase couchbase\r\ndocker-compose run -d --service-ports --name php php<\/pre>\n<p>Los comandos anteriores construir\u00e1n y desplegar\u00e1n cada una de las im\u00e1genes con los puertos definidos en el archivo Compose. Desde el navegador web, https:\/\/localhost:8091 deber\u00eda llevarte al dashboard de Couchbase Server, y https:\/\/localhost:8080 deber\u00eda llevarte a tu aplicaci\u00f3n PHP.<\/p>\n<p>Si tiene \u00e9xito, deber\u00eda ver la informaci\u00f3n guardada en la base de datos y mostrada en la pantalla.<\/p>\n<h2>Conclusi\u00f3n<\/h2>\n<p>Acabas de ver c\u00f3mo contenerizar y desplegar una aplicaci\u00f3n PHP que se comunica con un contenedor NoSQL Couchbase. Mientras que nuestra elecci\u00f3n de aplicaci\u00f3n era simple, se puede extender f\u00e1cilmente a algo m\u00e1s complicado usando cualquiera de los frameworks PHP disponibles.<\/p>\n<p>Esta misma gu\u00eda puede verse con <a href=\"https:\/\/www.couchbase.com\/blog\/es\/deploy-node-js-couchbase-web-application-docker-containers\/\" target=\"_blank\" rel=\"noopener noreferrer\">Node.js<\/a>, <a href=\"https:\/\/www.couchbase.com\/blog\/es\/deploy-golang-web-application-couchbase-docker-containers\/\" target=\"_blank\" rel=\"noopener noreferrer\">Golang<\/a>y <a href=\"https:\/\/www.couchbase.com\/blog\/es\/docker-deploy-containerized-java-couchbase-web-application\/\" target=\"_blank\" rel=\"noopener noreferrer\">Java<\/a>. Si quieres aprender m\u00e1s sobre la contenedorizaci\u00f3n de Couchbase Server, he escrito una versi\u00f3n m\u00e1s completa <a href=\"https:\/\/www.thepolyglotdeveloper.com\/2017\/04\/using-couchbase-docker-deploying-containerized-nosql-cluster\/\" target=\"_blank\" rel=\"noopener noreferrer\">aqu\u00ed<\/a>.<\/p>\n<p>Para obtener m\u00e1s informaci\u00f3n sobre el SDK PHP de Couchbase, consulte la p\u00e1gina <a href=\"https:\/\/www.couchbase.com\/blog\/es\/developers\/\" target=\"_blank\" rel=\"noopener noreferrer\">Portal para desarrolladores de Couchbase<\/a>.<\/p>","protected":false},"excerpt":{"rendered":"<p>Earlier in the year I wrote about containerizing applications written in various development technologies that communicate with Couchbase Server. For example, I had written about deploying a Golang application with Docker, a Java application with Docker, and a Node.js application [&hellip;]<\/p>","protected":false},"author":63,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1814,1815,1816,9408],"tags":[1554,1519],"ppma_author":[9032],"class_list":["post-3744","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-application-design","category-best-practices-and-tutorials","category-couchbase-server","category-php","tag-container","tag-docker"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.1 (Yoast SEO v26.1.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Deploy a PHP with Couchbase Application as Docker Containers<\/title>\n<meta name=\"description\" content=\"Learn how to deploy a PHP application as a Docker container that communicates with Couchbase Server, also in Docker container format.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/es\/deploy-php-couchbase-application-docker-containers\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Deploy a PHP with Couchbase Application as Docker Containers\" \/>\n<meta property=\"og:description\" content=\"Learn how to deploy a PHP application as a Docker container that communicates with Couchbase Server, also in Docker container format.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/deploy-php-couchbase-application-docker-containers\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/thepolyglotdeveloper\" \/>\n<meta property=\"article:published_time\" content=\"2017-06-13T14:15:01+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T04:28:57+00:00\" \/>\n<meta name=\"author\" content=\"Nic Raboy, Developer Advocate, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@nraboy\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Nic Raboy, Developer Advocate, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/deploy-php-couchbase-application-docker-containers\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/deploy-php-couchbase-application-docker-containers\/\"},\"author\":{\"name\":\"Nic Raboy, Developer Advocate, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1\"},\"headline\":\"Deploy a PHP with Couchbase Application as Docker Containers\",\"datePublished\":\"2017-06-13T14:15:01+00:00\",\"dateModified\":\"2025-06-14T04:28:57+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/deploy-php-couchbase-application-docker-containers\/\"},\"wordCount\":956,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/deploy-php-couchbase-application-docker-containers\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"keywords\":[\"container\",\"docker\"],\"articleSection\":[\"Application Design\",\"Best Practices and Tutorials\",\"Couchbase Server\",\"PHP\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/deploy-php-couchbase-application-docker-containers\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/deploy-php-couchbase-application-docker-containers\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/deploy-php-couchbase-application-docker-containers\/\",\"name\":\"Deploy a PHP with Couchbase Application as Docker Containers\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/deploy-php-couchbase-application-docker-containers\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/deploy-php-couchbase-application-docker-containers\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2017-06-13T14:15:01+00:00\",\"dateModified\":\"2025-06-14T04:28:57+00:00\",\"description\":\"Learn how to deploy a PHP application as a Docker container that communicates with Couchbase Server, also in Docker container format.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/deploy-php-couchbase-application-docker-containers\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/deploy-php-couchbase-application-docker-containers\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/deploy-php-couchbase-application-docker-containers\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/deploy-php-couchbase-application-docker-containers\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Deploy a PHP with Couchbase Application as Docker Containers\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1\",\"name\":\"Nic Raboy, Developer Advocate, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/8863514d8bed0cf6080f23db40e00354\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g\",\"caption\":\"Nic Raboy, Developer Advocate, Couchbase\"},\"description\":\"Nic Raboy is an advocate of modern web and mobile development technologies. He has experience in Java, JavaScript, Golang and a variety of frameworks such as Angular, NativeScript, and Apache Cordova. Nic writes about his development experiences related to making web and mobile development easier to understand.\",\"sameAs\":[\"https:\/\/www.thepolyglotdeveloper.com\",\"https:\/\/www.facebook.com\/thepolyglotdeveloper\",\"https:\/\/x.com\/nraboy\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/es\/author\/nic-raboy-2\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Desplegar una aplicaci\u00f3n PHP con Couchbase como contenedores Docker","description":"Aprende a desplegar una aplicaci\u00f3n PHP como un contenedor Docker que se comunica con Couchbase Server, tambi\u00e9n en formato contenedor 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:\/\/www.couchbase.com\/blog\/es\/deploy-php-couchbase-application-docker-containers\/","og_locale":"es_MX","og_type":"article","og_title":"Deploy a PHP with Couchbase Application as Docker Containers","og_description":"Learn how to deploy a PHP application as a Docker container that communicates with Couchbase Server, also in Docker container format.","og_url":"https:\/\/www.couchbase.com\/blog\/es\/deploy-php-couchbase-application-docker-containers\/","og_site_name":"The Couchbase Blog","article_author":"https:\/\/www.facebook.com\/thepolyglotdeveloper","article_published_time":"2017-06-13T14:15:01+00:00","article_modified_time":"2025-06-14T04:28:57+00:00","author":"Nic Raboy, Developer Advocate, Couchbase","twitter_card":"summary_large_image","twitter_creator":"@nraboy","twitter_misc":{"Written by":"Nic Raboy, Developer Advocate, Couchbase","Est. reading time":"4 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/deploy-php-couchbase-application-docker-containers\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/deploy-php-couchbase-application-docker-containers\/"},"author":{"name":"Nic Raboy, Developer Advocate, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1"},"headline":"Deploy a PHP with Couchbase Application as Docker Containers","datePublished":"2017-06-13T14:15:01+00:00","dateModified":"2025-06-14T04:28:57+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/deploy-php-couchbase-application-docker-containers\/"},"wordCount":956,"commentCount":1,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/deploy-php-couchbase-application-docker-containers\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","keywords":["container","docker"],"articleSection":["Application Design","Best Practices and Tutorials","Couchbase Server","PHP"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/deploy-php-couchbase-application-docker-containers\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/deploy-php-couchbase-application-docker-containers\/","url":"https:\/\/www.couchbase.com\/blog\/deploy-php-couchbase-application-docker-containers\/","name":"Desplegar una aplicaci\u00f3n PHP con Couchbase como contenedores Docker","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/deploy-php-couchbase-application-docker-containers\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/deploy-php-couchbase-application-docker-containers\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2017-06-13T14:15:01+00:00","dateModified":"2025-06-14T04:28:57+00:00","description":"Aprende a desplegar una aplicaci\u00f3n PHP como un contenedor Docker que se comunica con Couchbase Server, tambi\u00e9n en formato contenedor Docker.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/deploy-php-couchbase-application-docker-containers\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/deploy-php-couchbase-application-docker-containers\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/deploy-php-couchbase-application-docker-containers\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/deploy-php-couchbase-application-docker-containers\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Deploy a PHP with Couchbase Application as Docker Containers"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"El blog de Couchbase","description":"Couchbase, la base de datos NoSQL","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"El blog de Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1","name":"Nic Raboy, Defensor del Desarrollador, Couchbase","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/8863514d8bed0cf6080f23db40e00354","url":"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g","caption":"Nic Raboy, Developer Advocate, Couchbase"},"description":"Nic Raboy es un defensor de las tecnolog\u00edas modernas de desarrollo web y m\u00f3vil. Tiene experiencia en Java, JavaScript, Golang y una variedad de frameworks como Angular, NativeScript y Apache Cordova. Nic escribe sobre sus experiencias de desarrollo relacionadas con hacer el desarrollo web y m\u00f3vil m\u00e1s f\u00e1cil de entender.","sameAs":["https:\/\/www.thepolyglotdeveloper.com","https:\/\/www.facebook.com\/thepolyglotdeveloper","https:\/\/x.com\/nraboy"],"url":"https:\/\/www.couchbase.com\/blog\/es\/author\/nic-raboy-2\/"}]}},"authors":[{"term_id":9032,"user_id":63,"is_guest":0,"slug":"nic-raboy-2","display_name":"Nic Raboy, Developer Advocate, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g","author_category":"","last_name":"Raboy","first_name":"Nic","job_title":"","user_url":"https:\/\/www.thepolyglotdeveloper.com","description":"Nic Raboy es un defensor de las tecnolog\u00edas modernas de desarrollo web y m\u00f3vil. Tiene experiencia en Java, JavaScript, Golang y una variedad de frameworks como Angular, NativeScript y Apache Cordova. Nic escribe sobre sus experiencias de desarrollo relacionadas con hacer el desarrollo web y m\u00f3vil m\u00e1s f\u00e1cil de entender."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/3744","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/users\/63"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=3744"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/3744\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=3744"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=3744"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=3744"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=3744"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}