{"id":3621,"date":"2017-05-24T07:16:50","date_gmt":"2017-05-24T14:16:50","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=3621"},"modified":"2023-06-19T02:19:02","modified_gmt":"2023-06-19T09:19:02","slug":"using-docker-develop-couchbase","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/using-docker-develop-couchbase\/","title":{"rendered":"Uso de Docker para desarrollar con Couchbase"},"content":{"rendered":"<p><em><a href=\"https:\/\/twitter.com\/rafaelugolini\">Rafael Ugolini<\/a> es un desarrollador de software de pila completa con sede en Bruselas, B\u00e9lgica. <a href=\"https:\/\/www.linkedin.com\/in\/rafaelugolini\">\u00c9l<\/a> trabaja en el desarrollo de software desde hace m\u00e1s de 10 a\u00f1os y \u00faltimamente se centra en el dise\u00f1o de soluciones web y <a href=\"https:\/\/github.com\/rafaelugolini\">desarrollando<\/a> utilizando Python y JavaScript. Rafael Ugolini es desarrollador de software s\u00e9nior en Famoco.<\/em><\/p>\n<h1><img loading=\"lazy\" decoding=\"async\" class=\"\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/05\/FullSizeRender.jpg\" alt=\"FullSizeRender\" width=\"213\" height=\"284\" \/><\/h1>\n<h3>Introducci\u00f3n<\/h3>\n<p>Docker es un gran proyecto que est\u00e1 ayudando a desarrolladores de todo el mundo a ejecutar aplicaciones en <a \/>contenedores<\/a>. Esto no s\u00f3lo ayuda a enviar software m\u00e1s r\u00e1pido, sino que tambi\u00e9n resulta en la famosa frase \"funciona en mi m\u00e1quina\". En este art\u00edculo voy a explicar c\u00f3mo crear una imagen modular de Couchbase que no requiere ninguna interacci\u00f3n Web UI para tener una base de datos lista para usar por ti.<\/p>\n<p>Todo el c\u00f3digo est\u00e1 disponible <a href=\"https:\/\/github.com\/rafaelugolini\/couchbase-server-nosetup\">en l\u00ednea aqu\u00ed<\/a>.<\/p>\n<h3>Dockerfile<\/h3>\n<p>El primer paso es crear el Dockerfile.<\/p>\n<h3>Versi\u00f3n de Couchbase<\/h3>\n<pre class=\"lang:default decode:true\">FROM\u00a0couchbase\/server:enterprise-4.6.1\r\n\r\n<\/pre>\n<p>Este ejemplo est\u00e1 basado en Couchbase Server Enterprise 4.6.1, pero puedes cambiar a la versi\u00f3n espec\u00edfica que est\u00e9s ejecutando en tu entorno.<\/p>\n<h3>Configuraci\u00f3n de la memoria<\/h3>\n<pre class=\"lang:default decode:true\">ENV\u00a0MEMORY_QUOTA 256\r\nENV\u00a0INDEX_MEMORY_QUOTA 256\r\nENV\u00a0FTS_MEMORY_QUOTA 256\r\n\r\n<\/pre>\n<p><span style=\"font-weight: 400\">Todos los valores est\u00e1n en MB:<\/span><\/p>\n<p><span style=\"font-weight: 400\">- MEMORY_QUOTA: cuota de ram del servicio de datos por nodo<\/span><\/p>\n<p><span style=\"font-weight: 400\">- INDEX_MEMORY_QUOTA: cuota de ram del servicio de \u00edndices por nodo<\/span><\/p>\n<p><span style=\"font-weight: 400\">- FTS_MEMORY_QUOTA: cuota de memoria ram por nodo del servicio de \u00edndices<\/span><\/p>\n<h3>Servicios<\/h3>\n<pre class=\"lang:default decode:true\">ENV SERVICES \"kv,n1ql,index,fts\"<\/pre>\n<p>Estos son los servicios que estar\u00e1n disponibles para el nodo creado:<\/p>\n<p>- kv: Datos<\/p>\n<p>- n1ql: Consulta<\/p>\n<p>- \u00edndice: \u00cdndice<\/p>\n<p>- fts: B\u00fasqueda de texto completo<\/p>\n<h3>Credenciales<\/h3>\n<pre class=\"lang:default decode:true\">ENV\u00a0USERNAME \"Administrator\"\r\nENV\u00a0PASSWORD \"password\"<\/pre>\n<p>Nombre de usuario y contrase\u00f1a a utilizar en Couchbase Server.<\/p>\n<h3>Opciones de cl\u00faster<\/h3>\n<pre class=\"lang:default decode:true\">ENV\u00a0CLUSTER_HOST \"\"\r\nENV\u00a0CLUSTER_REBALANCE \"\"<\/pre>\n<p>Estas opciones s\u00f3lo se utilizan si desea a\u00f1adir m\u00e1s de un nodo en el cl\u00faster.<\/p>\n<p>- CLUSTER_HOST: nombre de host del cluster al que se unir\u00e1 este nodo<\/p>\n<p>- CLUSTER_REBALANCE: establece \"true\" si quieres que el cluster se reequilibre despu\u00e9s de que el nodo se una.<\/p>\n<h3>Punto de entrada<\/h3>\n<pre class=\"lang:default decode:true\">COPY\u00a0entrypoint.sh \/config-entrypoint.sh\r\n\r\nENTRYPOINT\u00a0[\"\/config-entrypoint.sh\"]<\/pre>\n<p>La imagen de Couchbase Server ya viene con un script entrypoint.sh y no queremos sobreescribirlo. El truco aqu\u00ed es copiar nuestra versi\u00f3n de entrypoint.sh a \/config-entrypoint.sh, ejecutar Couchbase Server entrypoint.sh en segundo plano, y despu\u00e9s de configurar el nodo adjuntar el script de nuevo al original <em>PUNTO DE ENTRADA<\/em>.<\/p>\n<h3>Punto de entrada<\/h3>\n<p>En <em>PUNTO DE ENTRADA<\/em>\u00a0se utiliza en combinaci\u00f3n con el script original de la imagen de Couchbase Server. Vamos a ir l\u00ednea por l\u00ednea para entender c\u00f3mo funciona.<\/p>\n<h3>Inicializar Couchbase Server<\/h3>\n<pre class=\"lang:default decode:true\"># Monitor mode (used to attach into couchbase entrypoint)\r\nset\u00a0-m\r\n# Send it to background\r\n\/entrypoint.sh couchbase-server &amp;<\/pre>\n<p>En primer lugar utilizamos set -m para activar el control de trabajos, proceso que se ejecuta en segundo plano (como el original <em>PUNTO DE ENTRADA<\/em>) se ejecutan en un grupo de procesos separado. Esta opci\u00f3n est\u00e1 desactivada por defecto en modo no interactivo, como los scripts.<\/p>\n<h3>Funciones \u00fatiles<\/h3>\n<pre class=\"lang:default decode:true\"># Check if couchbase server is up\r\ncheck_db() {\r\n\u00a0curl --silent https:\/\/127.0.0.1:8091\/pools &gt; \/dev\/null\r\n\u00a0echo\u00a0$?\r\n}\r\n\r\n<\/pre>\n<p>Esta funci\u00f3n se utiliza para comprobar cuando Couchbase Server comienza a responder llamadas HTTP.<\/p>\n<pre class=\"lang:default decode:true\"># Variable used in echo\r\ni=1\r\n# Echo with\r\nnumbered_echo() {\r\necho\u00a0\"[$i] $@\"\r\ni=`expr $i\u00a0+ 1`\r\n}<\/pre>\n<p>Esto es s\u00f3lo una funci\u00f3n util, a\u00f1ade un n\u00famero antes de cualquier eco en el script para contar los pasos dados autom\u00e1ticamente.<\/p>\n<pre class=\"lang:default decode:true\"># Parse JSON and get nodes from the cluster\r\nread_nodes() {\r\ncmd=\"import sys,json;\"\r\ncmd=\"${cmd} print(','.join([node['otpNode']\"\r\ncmd=\"${cmd} for node in json.load(sys.stdin)['nodes']\"\r\ncmd=\"${cmd} ]))\"\r\npython -c \"${cmd}\"\r\n}<\/pre>\n<p>Con el fin de analizar la salida de los nodos en Couchbase Server API, estoy usando una funci\u00f3n que se ejecuta ython para leer <em>STDIN<\/em>transformarlo a JSON y a los nodos Couchbase. Esto se utiliza para el reequilibrio.<\/p>\n<h3>Configurar el nodo<\/h3>\n<pre class=\"lang:default decode:true\"># Wait until it's ready\r\nuntil [[ $(check_db) = 0 ]]; do\r\n&gt;&amp;2 numbered_echo \"Waiting for Couchbase Server to be available\"\r\nsleep 1\r\ndone\r\n\r\necho\u00a0\"# Couchbase Server Online\"\r\necho\u00a0\"# Starting setup process\"<\/pre>\n<p>El primer paso consiste en esperar a que el servidor est\u00e9 listo y, a continuaci\u00f3n, utilizar la funci\u00f3n <em>eco_numerado<\/em>\u00a0puedes ver cu\u00e1nto tard\u00f3 Couchbase Server en tener disponibles las llamadas a la API.<\/p>\n<pre class=\"lang:default decode:true\">HOSTNAME=`hostname -f`\r\n\r\n# Reset steps\r\ni=1<\/pre>\n<p>A continuaci\u00f3n, establecemos una variable <em>NOMBRE HOST<\/em>\u00a0que se utilizar\u00e1 en todas las llamadas a la API que hagamos y tambi\u00e9n ponemos a cero el contador de <em>eco_numerado <\/em>poni\u00e9ndolo a 1.<\/p>\n<pre class=\"lang:default decode:true\">numbered_echo \"Initialize the node\"\r\ncurl --silent \"https:\/\/${HOSTNAME}:8091\/nodes\/self\/controller\/settings\"\u00a0\\\r\n-d path=\"\/opt\/couchbase\/var\/lib\/couchbase\/data\"\u00a0\\\r\n-d index_path=\"\/opt\/couchbase\/var\/lib\/couchbase\/data\"\r\n\r\nnumbered_echo \"Setting hostname\"\r\ncurl --silent \"https:\/\/${HOSTNAME}:8091\/node\/controller\/rename\"\u00a0\\\r\n-d hostname=${HOSTNAME}<\/pre>\n<p>&nbsp;<\/p>\n<p>Lo primero que hay que hacer es establecer la configuraci\u00f3n de almacenamiento en disco y luego establecemos el nombre de host.<\/p>\n<h3>Unirse a un cl\u00faster<\/h3>\n<pre class=\"lang:default decode:true\">if\u00a0[[ ${CLUSTER_HOST}\u00a0]];then\r\nnumbered_echo \"Joining cluster ${CLUSTER_HOST}\"\r\ncurl --silent -u ${USERNAME}:${PASSWORD}\u00a0\\\r\n\"https:\/\/${CLUSTER_HOST}:8091\/controller\/addNode\"\u00a0\\\r\n-d hostname=\"${HOSTNAME}\"\u00a0\\\r\n-d user=\"${USERNAME}\"\u00a0\\\r\n-d password=\"${PASSWORD}\"\u00a0\\\r\n-d services=\"${SERVICES}\"\u00a0&gt; \/dev\/null<\/pre>\n<p>Si <em>CLUSTER_HOST <\/em>el script intentar\u00e1 a\u00f1adir el archivo <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/4.5\/install\/deploy-with-docker-hub.html\">contenedor<\/a> al cl\u00faster.<\/p>\n<pre class=\"lang:default decode:true\">if\u00a0[[ ${CLUSTER_REBALANCE}\u00a0]]; then\r\n# \"Unexpected server error without the sleep 2\r\nsleep 2\r\nnumbered_echo \"Retrieving nodes\"\r\nknown_nodes=$(\r\ncurl --silent -u ${USERNAME}:${PASSWORD}\u00a0https:\/\/${CLUSTER_HOST}:8091\/pools\/default | read_nodes\r\n)\r\n\r\nnumbered_echo \"Rebalancing cluster\"\r\ncurl -u ${USERNAME}:${PASSWORD}\u00a0\\\r\n\"https:\/\/${CLUSTER_HOST}:8091\/controller\/rebalance\"\u00a0\\\r\n-d knownNodes=\"${known_nodes}\"\r\nfi\r\n\r\nelse<\/pre>\n<p>Despu\u00e9s de a\u00f1adir el nodo al cluster, el script tambi\u00e9n puede comprobar la variable <em>CLUSTER_REBALANCE<\/em>\u00a0para ver si necesita reequilibrar el cluster autom\u00e1ticamente. Aqu\u00ed es donde usamos la funci\u00f3n de Python para leer los nodos de <em>\/pools\/default <\/em>punto final.<\/p>\n<h3>No unirse a un cl\u00faster<\/h3>\n<pre class=\"lang:default decode:true\">numbered_echo \"Setting up memory\"\r\ncurl --silent \"https:\/\/${HOSTNAME}:8091\/pools\/default\"\u00a0\\\r\n-d memoryQuota=${MEMORY_QUOTA}\u00a0\\\r\n-d indexMemoryQuota=${INDEX_MEMORY_QUOTA}\u00a0\\\r\n-d ftsMemoryQuota=${FTS_MEMORY_QUOTA}<\/pre>\n<p>Ajustes de memoria para los servicios.<\/p>\n<pre class=\"lang:default decode:true\">numbered_echo \"Setting up services\"\r\ncurl --silent \"https:\/\/${HOSTNAME}:8091\/node\/controller\/setupServices\"\u00a0\\\r\n-d services=\"${SERVICES}\"<\/pre>\n<p>Servicios que utilizar\u00e1 el nodo.<\/p>\n<pre class=\"lang:default decode:true\">numbered_echo \"Setting up user credentials\"\r\ncurl --silent \"https:\/\/${HOSTNAME}:8091\/settings\/web\"\u00a0\\\r\n-d port=8091 \\\r\n-d username=${USERNAME}\u00a0\\\r\n-d password=${PASSWORD}\u00a0&gt; \/dev\/null\r\n\r\nfi<\/pre>\n<p>Configure las credenciales para el nodo.<\/p>\n<h3>Finalizar<\/h3>\n<pre class=\"lang:default decode:true\"># Attach to couchbase entrypoint\r\nnumbered_echo \"Attaching to couchbase-server entrypoint\"\r\nfg\u00a01<\/pre>\n<p>Para finalizar el script, lo adjuntamos al original <em>PUNTO DE ENTRADA<\/em>.<\/p>\n<h3>Ejemplo<\/h3>\n<p>Para demostrar c\u00f3mo utilizarlo, utilizar\u00e9 la imagen registrada en <a href=\"https:\/\/hub.docker.com\/r\/rugolini\/couchbase-server-nosetup\/\">Centro Docker<\/a> con el c\u00f3digo <a href=\"https:\/\/github.com\/rafaelugolini\/couchbase-server-nosetup\"><u>aqu\u00ed<\/u><\/a>.<\/p>\n<h3>Nodo \u00fanico<\/h3>\n<p>&nbsp;<\/p>\n<pre class=\"lang:default decode:true\">docker run -ti --name couchbase-server-nosetup \\\r\n-h node1.cluster \\\r\n-p 8091-8093:8091-8093 \\\r\n-p 11210:11210 \\\r\n-p 4369:4369 \\\r\n-p 21100-21299:21100-21299 \\\r\nrugolini\/couchbase-server-nosetup<\/pre>\n<p>Esto ejecuta un \u00fanico nodo utilizando la memoria m\u00ednima requerida y las credenciales por defecto (<em>Administrador\/contrase\u00f1a<\/em>) registrados en la imagen. Todos los puertos de red <a href=\"https:\/\/www.couchbase.com\/blog\/es\/products\/server\/\">Servidor Couchbase<\/a> usos tambi\u00e9n est\u00e1n expuestos.<\/p>\n<pre class=\"lang:default decode:true\">docker run -ti --name couchbase-server-nosetup \\\r\n-h node1.cluster \\\r\n-p 8091-8093:8091-8093 \\\r\n-p 11210:11210 \\\r\n-p 4369:4369 \\\r\n-e MEMORY_QUOTA=512 \\\r\n-e INDEX_MEMORY_QUOTA=512 \\\r\n-e FTS_MEMORY_QUOTA=512 \\\r\n-e USERNAME=admin \\\r\n-e PASSWORD=adminadmin \\\r\n-p 21100-21299:21100-21299 \\\r\nrugolini\/couchbase-server-nosetup<\/pre>\n<p>El comando anterior juega un poco con las variables de entorno disponibles en el Dockerfile.<\/p>\n<h3>Grupo<\/h3>\n<p>En este ejemplo, conectaremos 3 nodos en el cluster.<\/p>\n<pre class=\"lang:default decode:true\">docker network create couchbase\r\n\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>Primero debemos crear una red Couchbase donde conectaremos todos los nodos.<\/p>\n<pre class=\"lang:default decode:true\">docker run -ti --name node1.cluster \\\r\n-p 8091-8093:8091-8093 \\\r\n-p 11210:11210 \\\r\n-p 4369:4369 \\\r\n-p 21100-21299:21100-21299 \\\r\n-h node1.cluster \\\r\n--network=couchbase \\\r\nrugolini\/couchbase-server-nosetup<\/pre>\n<p>A continuaci\u00f3n, creamos el primer nodo.<\/p>\n<pre class=\"lang:default decode:true\">docker run -ti --name node2.cluster \\\r\n--network=couchbase \\\r\n-h node2.cluster \\\r\n-e CLUSTER_HOST=node1.cluster \\\r\n-e CLUSTER_REBALANCE=true\u00a0\\\r\nrugolini\/couchbase-server-nosetup<\/pre>\n<p>&nbsp;<\/p>\n<p>Dado que todos los puertos de red est\u00e1n expuestos en el primer nodo, no es necesario exponerlos aqu\u00ed.<\/p>\n<p>Atenci\u00f3n a los detalles que <em>CLUSTER_HOST<\/em>\u00a0se establece en <em>nodo1.cluster<\/em>\u00a0que es el nombre de host del primer nodo y <em>CLUSTER_REBALANCE<\/em>\u00a0tambi\u00e9n se establece en <em>verdadero<\/em>. Una vez a\u00f1adido el nodo al cl\u00faster, se reequilibrar\u00e1 autom\u00e1ticamente.<\/p>\n<pre class=\"lang:default decode:true\">docker run -ti --name node3.cluster \\\r\n--network=couchbase \\\r\n-h node3.cluster \\\r\n-e CLUSTER_HOST=node1.cluster \\\r\nrugolini\/couchbase-server-nosetup<\/pre>\n<p>&nbsp;<\/p>\n<p>El nodo3 tambi\u00e9n se a\u00f1ade al cluster, pero como <em>CLUSTER_REBALANCE<\/em>\u00a0no se ha establecido, ser\u00e1 necesario reequilibrar manualmente el cl\u00faster para que est\u00e9 disponible.<\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/es\/community\/community-writers-program\/\"><em>Este post forma parte del Programa de Escritura de la Comunidad Couchbase<\/em><\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>Docker es un gran proyecto que est\u00e1 ayudando a desarrolladores de todo el mundo a ejecutar aplicaciones en contenedores. Esto no s\u00f3lo ayuda a enviar software m\u00e1s r\u00e1pido, sino que tambi\u00e9n da lugar a la famosa frase \"funciona en mi m\u00e1quina\". En este art\u00edculo explicar\u00e9 c\u00f3mo crear una imagen modular de Couchbase que no requiera ninguna interacci\u00f3n con la interfaz de usuario web para tener una base de datos lista para usar.<\/p>","protected":false},"author":53,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1816],"tags":[1520,1519],"ppma_author":[9026],"class_list":["post-3621","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-couchbase-server","tag-containers","tag-docker"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.8 (Yoast SEO v25.8) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Using Docker to develop with Couchbase - The Couchbase Blog<\/title>\n<meta name=\"description\" content=\"See how to create a modular Couchbase image that doesn\u2019t require any Web UI interaction to have a ready-to-go database for you.\" \/>\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\/using-docker-develop-couchbase\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Using Docker to develop with Couchbase\" \/>\n<meta property=\"og:description\" content=\"See how to create a modular Couchbase image that doesn\u2019t require any Web UI interaction to have a ready-to-go database for you.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/using-docker-develop-couchbase\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-05-24T14:16:50+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-06-19T09:19:02+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/05\/FullSizeRender.jpg\" \/>\n<meta name=\"author\" content=\"Laura Czajkowski, Developer Community Manager, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Laura Czajkowski, Developer Community Manager, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-docker-develop-couchbase\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-docker-develop-couchbase\/\"},\"author\":{\"name\":\"Laura Czajkowski, Developer Community Manager, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/5f1a0ece4e644bc8c037686fbc8f3220\"},\"headline\":\"Using Docker to develop with Couchbase\",\"datePublished\":\"2017-05-24T14:16:50+00:00\",\"dateModified\":\"2023-06-19T09:19:02+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-docker-develop-couchbase\/\"},\"wordCount\":857,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-docker-develop-couchbase\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"keywords\":[\"containers\",\"docker\"],\"articleSection\":[\"Couchbase Server\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/using-docker-develop-couchbase\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-docker-develop-couchbase\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/using-docker-develop-couchbase\/\",\"name\":\"Using Docker to develop with Couchbase - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-docker-develop-couchbase\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-docker-develop-couchbase\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2017-05-24T14:16:50+00:00\",\"dateModified\":\"2023-06-19T09:19:02+00:00\",\"description\":\"See how to create a modular Couchbase image that doesn\u2019t require any Web UI interaction to have a ready-to-go database for you.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-docker-develop-couchbase\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/using-docker-develop-couchbase\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-docker-develop-couchbase\/#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\/using-docker-develop-couchbase\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Using Docker to develop with Couchbase\"}]},{\"@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\/5f1a0ece4e644bc8c037686fbc8f3220\",\"name\":\"Laura Czajkowski, Developer Community Manager, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/9deb07d5daaa00220534c31768bc4409\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/bc8eebaf25cbe39bc12fd7b1ef92550becc3953ab877a3f0285a59ec2d30b754?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/bc8eebaf25cbe39bc12fd7b1ef92550becc3953ab877a3f0285a59ec2d30b754?s=96&d=mm&r=g\",\"caption\":\"Laura Czajkowski, Developer Community Manager, Couchbase\"},\"description\":\"Laura Czajkowski is the Snr. Developer Community Manager at Couchbase overseeing the community. She\u2019s responsible for our monthly developer newsletter.\",\"url\":\"https:\/\/www.couchbase.com\/blog\/es\/author\/laura-czajkowski\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Using Docker to develop with Couchbase - The Couchbase Blog","description":"See how to create a modular Couchbase image that doesn\u2019t require any Web UI interaction to have a ready-to-go database for you.","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\/using-docker-develop-couchbase\/","og_locale":"es_MX","og_type":"article","og_title":"Using Docker to develop with Couchbase","og_description":"See how to create a modular Couchbase image that doesn\u2019t require any Web UI interaction to have a ready-to-go database for you.","og_url":"https:\/\/www.couchbase.com\/blog\/es\/using-docker-develop-couchbase\/","og_site_name":"The Couchbase Blog","article_published_time":"2017-05-24T14:16:50+00:00","article_modified_time":"2023-06-19T09:19:02+00:00","og_image":[{"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/05\/FullSizeRender.jpg","type":"","width":"","height":""}],"author":"Laura Czajkowski, Developer Community Manager, Couchbase","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Laura Czajkowski, Developer Community Manager, Couchbase","Est. reading time":"6 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/using-docker-develop-couchbase\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/using-docker-develop-couchbase\/"},"author":{"name":"Laura Czajkowski, Developer Community Manager, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/5f1a0ece4e644bc8c037686fbc8f3220"},"headline":"Using Docker to develop with Couchbase","datePublished":"2017-05-24T14:16:50+00:00","dateModified":"2023-06-19T09:19:02+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/using-docker-develop-couchbase\/"},"wordCount":857,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/using-docker-develop-couchbase\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","keywords":["containers","docker"],"articleSection":["Couchbase Server"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/using-docker-develop-couchbase\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/using-docker-develop-couchbase\/","url":"https:\/\/www.couchbase.com\/blog\/using-docker-develop-couchbase\/","name":"Using Docker to develop with Couchbase - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/using-docker-develop-couchbase\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/using-docker-develop-couchbase\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2017-05-24T14:16:50+00:00","dateModified":"2023-06-19T09:19:02+00:00","description":"See how to create a modular Couchbase image that doesn\u2019t require any Web UI interaction to have a ready-to-go database for you.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/using-docker-develop-couchbase\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/using-docker-develop-couchbase\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/using-docker-develop-couchbase\/#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\/using-docker-develop-couchbase\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Using Docker to develop with Couchbase"}]},{"@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\/5f1a0ece4e644bc8c037686fbc8f3220","name":"Laura Czajkowski, Directora de la Comunidad de Desarrolladores, Couchbase","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/9deb07d5daaa00220534c31768bc4409","url":"https:\/\/secure.gravatar.com\/avatar\/bc8eebaf25cbe39bc12fd7b1ef92550becc3953ab877a3f0285a59ec2d30b754?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/bc8eebaf25cbe39bc12fd7b1ef92550becc3953ab877a3f0285a59ec2d30b754?s=96&d=mm&r=g","caption":"Laura Czajkowski, Developer Community Manager, Couchbase"},"description":"Laura Czajkowski es la Snr. Developer Community Manager en Couchbase supervisando la comunidad. Es responsable de nuestro bolet\u00edn mensual para desarrolladores.","url":"https:\/\/www.couchbase.com\/blog\/es\/author\/laura-czajkowski\/"}]}},"authors":[{"term_id":9026,"user_id":53,"is_guest":0,"slug":"laura-czajkowski","display_name":"Laura Czajkowski, Developer Community Manager, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/bc8eebaf25cbe39bc12fd7b1ef92550becc3953ab877a3f0285a59ec2d30b754?s=96&d=mm&r=g","author_category":"","last_name":"Czajkowski","first_name":"Laura","job_title":"","user_url":"","description":"Laura Czajkowski es la Snr. Developer Community Manager en Couchbase supervisando la comunidad. Es responsable de nuestro bolet\u00edn mensual para desarrolladores."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/3621","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\/53"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=3621"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/3621\/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=3621"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=3621"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=3621"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=3621"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}