{"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\/pt\/using-docker-develop-couchbase\/","title":{"rendered":"Usando o Docker para desenvolver com o Couchbase"},"content":{"rendered":"<p><em><a href=\"https:\/\/twitter.com\/rafaelugolini\">Rafael Ugolini<\/a> \u00e9 um desenvolvedor de software full stack atualmente baseado em Bruxelas, na B\u00e9lgica. <a href=\"https:\/\/www.linkedin.com\/in\/rafaelugolini\">Ele<\/a> trabalha com desenvolvimento de software h\u00e1 mais de 10 anos e, ultimamente, tem se concentrado em projetar solu\u00e7\u00f5es para a web e <a href=\"https:\/\/github.com\/rafaelugolini\">desenvolvimento<\/a> usando Python e JavaScript. Rafael Ugolini \u00e9 desenvolvedor de software s\u00eanior da 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>Introdu\u00e7\u00e3o<\/h3>\n<p>O Docker \u00e9 um projeto excelente que est\u00e1 ajudando os desenvolvedores de todo o mundo a executar aplicativos em <a \/>cont\u00eaineres<\/a>. Isso n\u00e3o s\u00f3 ajuda a enviar software mais rapidamente, mas tamb\u00e9m resulta na famosa frase \"funciona na minha m\u00e1quina\". Neste artigo, explicarei como criar uma imagem modular do Couchbase que n\u00e3o requer nenhuma intera\u00e7\u00e3o com a interface do usu\u00e1rio da Web para ter um banco de dados pronto para uso para voc\u00ea.<\/p>\n<p>Todo o c\u00f3digo est\u00e1 dispon\u00edvel <a href=\"https:\/\/github.com\/rafaelugolini\/couchbase-server-nosetup\">online aqui<\/a>.<\/p>\n<h3>Dockerfile<\/h3>\n<p>A primeira etapa \u00e9 criar o Dockerfile.<\/p>\n<h3>Vers\u00e3o do Couchbase<\/h3>\n<pre class=\"lang:default decode:true\">FROM\u00a0couchbase\/server:enterprise-4.6.1\r\n\r\n<\/pre>\n<p>Este exemplo \u00e9 baseado no Couchbase Server Enterprise 4.6.1, mas voc\u00ea pode mudar para a vers\u00e3o espec\u00edfica que est\u00e1 executando em seu ambiente.<\/p>\n<h3>Configura\u00e7\u00e3o da mem\u00f3ria<\/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 os valores aqui est\u00e3o em MB:<\/span><\/p>\n<p><span style=\"font-weight: 400\">- MEMORY_QUOTA: cota de RAM do servi\u00e7o de dados por n\u00f3<\/span><\/p>\n<p><span style=\"font-weight: 400\">- INDEX_MEMORY_QUOTA: cota de mem\u00f3ria ram do servi\u00e7o de \u00edndice por n\u00f3<\/span><\/p>\n<p><span style=\"font-weight: 400\">- FTS_MEMORY_QUOTA: cota de mem\u00f3ria ram do servi\u00e7o de \u00edndice por n\u00f3<\/span><\/p>\n<h3>Servi\u00e7os<\/h3>\n<pre class=\"lang:default decode:true\">ENV SERVICES \"kv,n1ql,index,fts\"<\/pre>\n<p>Esses s\u00e3o os servi\u00e7os que estar\u00e3o dispon\u00edveis para o n\u00f3 criado:<\/p>\n<p>- kv: Dados<\/p>\n<p>- n1ql: Consulta<\/p>\n<p>- \u00edndice: \u00cdndice<\/p>\n<p>- fts: Pesquisa de texto completo<\/p>\n<h3>Credenciais<\/h3>\n<pre class=\"lang:default decode:true\">ENV\u00a0USERNAME \"Administrator\"\r\nENV\u00a0PASSWORD \"password\"<\/pre>\n<p>Nome de usu\u00e1rio e senha a serem usados no Couchbase Server.<\/p>\n<h3>Op\u00e7\u00f5es de cluster<\/h3>\n<pre class=\"lang:default decode:true\">ENV\u00a0CLUSTER_HOST \"\"\r\nENV\u00a0CLUSTER_REBALANCE \"\"<\/pre>\n<p>Essas op\u00e7\u00f5es s\u00e3o usadas somente se voc\u00ea quiser adicionar mais de um n\u00f3 no cluster.<\/p>\n<p>- CLUSTER_HOST: nome do host do cluster ao qual esse n\u00f3 deve se juntar<\/p>\n<p>- CLUSTER_REBALANCE: defina \"true\" se quiser que o cluster seja reequilibrado depois que o n\u00f3 for associado<\/p>\n<h3>Ponto 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>A imagem do Couchbase Server j\u00e1 vem com um script entrypoint.sh e n\u00e3o queremos substitu\u00ed-lo. O truque aqui \u00e9 copiar a nossa vers\u00e3o do entrypoint.sh para \/config-entrypoint.sh, executar o entrypoint.sh do Couchbase Server em segundo plano e, depois de configurar o n\u00f3, anexar o script de volta ao original <em>PONTO DE ENTRADA<\/em>.<\/p>\n<h3>Ponto de entrada<\/h3>\n<p>O <em>PONTO DE ENTRADA<\/em>\u00a0\u00e9 usado em combina\u00e7\u00e3o com o script original da imagem do Couchbase Server. Vamos examinar linha por linha para entender como ele funciona.<\/p>\n<h3>Inicializar o servidor Couchbase<\/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>Primeiro, usamos set -m para ativar o controle de trabalho, o processo em execu\u00e7\u00e3o em segundo plano (como o <em>PONTO DE ENTRADA<\/em>) s\u00e3o executados em um grupo de processos separado. Essa op\u00e7\u00e3o \u00e9 desativada por padr\u00e3o no modo n\u00e3o interativo, como scripts.<\/p>\n<h3>Fun\u00e7\u00f5es utilit\u00e1rias<\/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>Essa fun\u00e7\u00e3o \u00e9 usada para verificar quando o Couchbase Server come\u00e7a a responder \u00e0s chamadas 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>Essa \u00e9 apenas uma fun\u00e7\u00e3o utilit\u00e1ria, adicione um n\u00famero antes de qualquer eco no script para contar as etapas realizadas automaticamente.<\/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>Para analisar a sa\u00edda dos n\u00f3s na API do Couchbase Server, estou usando uma fun\u00e7\u00e3o que executa o ython para ler <em>STDIN<\/em>transform\u00e1-lo em JSON e nos n\u00f3s do Couchbase. Isso \u00e9 usado para rebalanceamento.<\/p>\n<h3>Configurar o n\u00f3<\/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>A primeira etapa \u00e9 aguardar at\u00e9 que o servidor esteja pronto e, em seguida, usar a fun\u00e7\u00e3o <em>numbered_echo<\/em>\u00a0voc\u00ea pode ver quanto tempo levou para o Couchbase Server ter as chamadas de API dispon\u00edveis.<\/p>\n<pre class=\"lang:default decode:true\">HOSTNAME=`hostname -f`\r\n\r\n# Reset steps\r\ni=1<\/pre>\n<p>Em seguida, definimos uma vari\u00e1vel <em>HOSTNAME<\/em>\u00a0para ser usado em todas as chamadas de API que fazemos e tamb\u00e9m redefinimos o contador de <em>numbered_echo <\/em>definindo-o como 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>A primeira coisa a fazer \u00e9 definir a configura\u00e7\u00e3o do armazenamento em disco e, em seguida, definir o nome do host.<\/p>\n<h3>Ingressar em um cluster<\/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>Se <em>CLUSTER_HOST <\/em>estiver definido, o script tentar\u00e1 adicionar o <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/4.5\/install\/deploy-with-docker-hub.html\">cont\u00eainer<\/a> para o cluster.<\/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>Depois de adicionar o n\u00f3 ao cluster, o script tamb\u00e9m pode verificar a vari\u00e1vel <em>REBALANCEAMENTO DE CLUSTER<\/em>\u00a0para ver se ele precisa reequilibrar o cluster automaticamente. \u00c9 aqui que usamos a fun\u00e7\u00e3o Python para ler os n\u00f3s de <em>\/pools\/default <\/em>ponto final.<\/p>\n<h3>N\u00e3o ingressar em um cluster<\/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>Configura\u00e7\u00f5es de mem\u00f3ria para os servi\u00e7os.<\/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>Servi\u00e7os a serem usados pelo n\u00f3.<\/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 as credenciais para o n\u00f3.<\/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 o script, n\u00f3s o anexamos ao script original <em>PONTO DE ENTRADA<\/em>.<\/p>\n<h3>Exemplo<\/h3>\n<p>Para demonstrar como us\u00e1-lo, usarei a imagem registrada em <a href=\"https:\/\/hub.docker.com\/r\/rugolini\/couchbase-server-nosetup\/\">Docker Hub<\/a> com o c\u00f3digo <a href=\"https:\/\/github.com\/rafaelugolini\/couchbase-server-nosetup\"><u>aqui<\/u><\/a>.<\/p>\n<h3>N\u00f3 \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>Isso executa um \u00fanico n\u00f3 usando a mem\u00f3ria m\u00ednima necess\u00e1ria e as credenciais padr\u00e3o (<em>Administrador\/senha<\/em>) registrados na imagem. Todas as portas de rede <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/products\/server\/\">Servidor Couchbase<\/a> Os usos tamb\u00e9m s\u00e3o expostos.<\/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>O comando acima brinca um pouco com as vari\u00e1veis de ambiente dispon\u00edveis no Dockerfile.<\/p>\n<h3>Aglomerado<\/h3>\n<p>Neste exemplo, conectaremos 3 n\u00f3s no cluster.<\/p>\n<pre class=\"lang:default decode:true\">docker network create couchbase\r\n\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>Primeiro, precisamos criar uma rede do Couchbase na qual conectaremos todos os n\u00f3s.<\/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>Em seguida, criamos o primeiro n\u00f3.<\/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>Como todas as portas de rede est\u00e3o expostas no primeiro n\u00f3, n\u00e3o \u00e9 necess\u00e1rio exp\u00f4-las aqui.<\/p>\n<p>Aten\u00e7\u00e3o aos detalhes que <em>CLUSTER_HOST<\/em>\u00a0\u00e9 definido como <em>node1.cluster<\/em>\u00a0que \u00e9 o nome do host do primeiro n\u00f3 e <em>REBALANCEAMENTO DE CLUSTER<\/em>\u00a0tamb\u00e9m \u00e9 definido como <em>verdadeiro<\/em>. Quando o n\u00f3 for adicionado ao cluster, ele se reequilibrar\u00e1 automaticamente.<\/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>O n\u00f33 tamb\u00e9m \u00e9 adicionado ao cluster, mas como <em>REBALANCEAMENTO DE CLUSTER<\/em>\u00a0n\u00e3o foi definido, ser\u00e1 necess\u00e1rio um rebalanceamento manual do cluster para que ele se torne dispon\u00edvel.<\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/community\/community-writers-program\/\"><em>Esta postagem faz parte do Programa de Reda\u00e7\u00e3o da Comunidade Couchbase<\/em><\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>O Docker \u00e9 um grande projeto que est\u00e1 ajudando os desenvolvedores de todo o mundo a executar aplicativos em cont\u00eaineres. Isso n\u00e3o s\u00f3 ajuda a enviar software mais rapidamente, mas tamb\u00e9m resulta na famosa frase \"funciona na minha m\u00e1quina\". Neste artigo, explicarei como criar uma imagem modular do Couchbase que n\u00e3o requer nenhuma intera\u00e7\u00e3o com a interface do usu\u00e1rio da Web para ter um banco de dados pronto para uso.<\/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.7.1 (Yoast SEO v25.7) - 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\/pt\/using-docker-develop-couchbase\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\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\/pt\/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\":\"pt-BR\",\"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\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/using-docker-develop-couchbase\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@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\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@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\":\"pt-BR\",\"@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\/pt\/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\/pt\/using-docker-develop-couchbase\/","og_locale":"pt_BR","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\/pt\/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":"pt-BR","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":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/using-docker-develop-couchbase\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@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":"Blog do Couchbase","description":"Couchbase, o banco de dados 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":"pt-BR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"Blog do Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@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, gerente da comunidade de desenvolvedores, Couchbase","image":{"@type":"ImageObject","inLanguage":"pt-BR","@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 \u00e9 a Snr. Developer Community Manager da Couchbase, supervisionando a comunidade. Ela \u00e9 respons\u00e1vel pelo nosso boletim informativo mensal para desenvolvedores.","url":"https:\/\/www.couchbase.com\/blog\/pt\/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","first_name":"Laura","last_name":"Czajkowski","user_url":"","author_category":"","description":"Laura Czajkowski \u00e9 a Snr. Developer Community Manager da Couchbase, supervisionando a comunidade. Ela \u00e9 respons\u00e1vel pelo nosso boletim informativo mensal para desenvolvedores."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/3621","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/users\/53"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=3621"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/3621\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=3621"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=3621"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=3621"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=3621"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}