{"id":2986,"date":"2017-04-18T05:00:23","date_gmt":"2017-04-18T12:00:23","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=2986"},"modified":"2023-07-21T00:41:13","modified_gmt":"2023-07-21T07:41:13","slug":"docker-deploy-containerized-java-couchbase-web-application","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/ko\/docker-deploy-containerized-java-couchbase-web-application\/","title":{"rendered":"Docker\ub97c \uc0ac\uc6a9\ud558\uc5ec Couchbase \uc6f9 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc73c\ub85c \ucee8\ud14c\uc774\ub108\ud654\ub41c Java \ubc30\ud3ec\ud558\uae30"},"content":{"rendered":"<p>\uc5bc\ub9c8 \uc804\uae4c\uc9c0\ub9cc \ud574\ub3c4 <a href=\"https:\/\/www.couchbase.com\/blog\/ko\/deploy-node-js-couchbase-web-application-docker-containers\/\" target=\"_blank\" rel=\"noopener\">Node.js RESTful API\uc640 \uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \uc11c\ubc84 \ucee8\ud14c\uc774\ub108\ud654\ud558\uae30<\/a> \ub97c \ud1b5\ud574 \uc6f9 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \ube60\ub974\uace0 \uc548\uc815\uc801\uc73c\ub85c \ubc30\ud3ec\ud558\ub294 \uac83\uc774 \uc5bc\ub9c8\ub098 \uc26c\uc6b4\uc9c0 \ubcf4\uc5ec\ub4dc\ub838\uc2b5\ub2c8\ub2e4.  \uc774 \uac00\uc774\ub4dc\uc5d0\uc11c\ub294 \uac04\ub2e8\ud55c API\ub97c \ub9cc\ub4e4\uace0, \uc774\ub97c \ud1b5\ud574 Docker \uc774\ubbf8\uc9c0\ub97c \uad6c\ucd95\ud55c \ub2e4\uc74c \ucee8\ud14c\uc774\ub108\ub85c \ubc30\ud3ec\ud558\uace0, Couchbase\ub97c \ucee8\ud14c\uc774\ub108\ub85c \ubc30\ud3ec\ud588\uc2b5\ub2c8\ub2e4.  \ud558\uc9c0\ub9cc \ubaa8\ub4e0 \uc0ac\ub78c\uc774 Node.js\uc5d0 \uc775\uc219\ud558\uc9c0\ub294 \uc54a\ub2e4\ub294 \uac83\uc744 \uc54c\uace0 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uc5ec\uae30\uc11c\ub294 Spring Boot\ub97c \uc0ac\uc6a9\ud558\uc5ec \uac04\ub2e8\ud55c Java RESTful API\ub97c \ube4c\ub4dc\ud558\uc5ec <a href=\"https:\/\/www.docker.com\" target=\"_blank\" rel=\"noopener\">Docker<\/a> \uc774\ubbf8\uc9c0\ub97c \uc0dd\uc131\ud558\uace0, \ucee8\ud14c\uc774\ub108\ub85c \ubc30\ud3ec\ud569\ub2c8\ub2e4. <a href=\"https:\/\/www.couchbase.com\/blog\/ko\/\" target=\"_blank\" rel=\"noopener\">\uce74\uc6b0\uce58\ubca0\uc774\uc2a4<\/a>.  \uc774\ub807\uac8c \ud558\uba74 Java \uac1c\ubc1c\uc790\uc5d0\uac8c \uce5c\uc219\ud55c \ud658\uacbd\uc774 \ub9cc\ub4e4\uc5b4\uc9d1\ub2c8\ub2e4.<\/p>\n<p><!--more--><\/p>\n<p>\uc774 \ud29c\ud1a0\ub9ac\uc5bc\uc744 \uc0ac\uc6a9\ud558\ub824\uba74 \ucef4\ud4e8\ud130\uc5d0 Docker\uac00 \uc124\uce58 \ubc0f \uad6c\uc131\ub418\uc5b4 \uc788\uc5b4\uc57c \ud569\ub2c8\ub2e4.  Docker\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc0ac\uc6a9\uc790 \uc9c0\uc815 Docker \uc774\ubbf8\uc9c0\ub97c \ub9cc\ub4e4\uace0 \uc774\ub97c \ucee8\ud14c\uc774\ub108\ub85c \ubc30\ud3ec\ud560 \uac83\uc785\ub2c8\ub2e4.<\/p>\n<h2>\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \uc11c\ubc84\uc6a9 \uc0ac\uc6a9\uc790 \uc9c0\uc815 \ub3c4\ucee4 \uc774\ubbf8\uc9c0 \ub9cc\ub4e4\uae30<\/h2>\n<p>\uba3c\uc800 \uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \uc11c\ubc84\uc6a9 \uc0ac\uc6a9\uc790 \uc815\uc758 Docker \uc774\ubbf8\uc9c0\ub97c \ub9cc\ub4dc\ub294 \uac83\ubd80\ud130 \uc2dc\uc791\ud558\uaca0\uc2b5\ub2c8\ub2e4.  \ub3d9\uc548 <a href=\"https:\/\/hub.docker.com\/_\/couchbase\/\" target=\"_blank\" rel=\"noopener\">\uacf5\uc2dd \uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \uc774\ubbf8\uc9c0<\/a> \uac00 \uc874\uc7ac\ud558\ub354\ub77c\ub3c4 \ubc30\ud3ec \uc2dc \uc790\ub3d9\uc73c\ub85c \ud504\ub85c\ube44\uc800\ub2dd\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.  \uc0ac\uc6a9\uc790 \uc815\uc758 \uc774\ubbf8\uc9c0\ub294 \ucee8\ud14c\uc774\ub108\ub85c \ubc30\ud3ec\ud560 \ub54c \uc790\ub3d9\uc73c\ub85c \ud504\ub85c\ube44\uc800\ub2dd\ub429\ub2c8\ub2e4.<\/p>\n<p>\ucef4\ud4e8\ud130 \uc5b4\ub518\uac00\uc5d0 \ub514\ub809\ud130\ub9ac\ub97c \ub9cc\ub4e4\uace0\u00a0<strong>\ub3c4\ucee4\ud30c\uc77c<\/strong> \ud30c\uc77c\uacfc\u00a0<strong>configure.sh<\/strong> \ud30c\uc77c\uc744 \ub123\uc2b5\ub2c8\ub2e4.  \uadf8\ub9ac\uace0\u00a0<strong>\ub3c4\ucee4\ud30c\uc77c<\/strong> \ud30c\uc77c\uc740 \uc774\ubbf8\uc9c0\uc758 \uccad\uc0ac\uc9c4\uc774 \ub418\uace0\u00a0<strong>configure.sh<\/strong> \ud30c\uc77c\uc740 \ucee8\ud14c\uc774\ub108\uac00 \ubc30\ud3ec\ub420 \ub54c \uc2e4\ud589\ub418\ub294 \ud504\ub85c\ube44\uc800\ub2dd \uc2a4\ud06c\ub9bd\ud2b8\uac00 \ub429\ub2c8\ub2e4.<\/p>\n<p>\uc5f4\uae30\u00a0<strong>configure.sh<\/strong> \ud30c\uc77c\uc744 \uc5f4\uace0 \ub2e4\uc74c\uc744 \ud3ec\ud568\ud558\uc138\uc694:<\/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\ub294 \ubc30\ud3ec \ud6c4 HTTP\ub97c \ud1b5\ud574 \uad6c\uc131\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.  \uad6c\uc131 \uc2a4\ud06c\ub9bd\ud2b8\ub294 \uc778\uc2a4\ud134\uc2a4 \ub9ac\uc18c\uc2a4, \uad00\ub9ac \uc790\uaca9 \uc99d\uba85, \ubc84\ud0b7 \ubc0f \uae30\ubcf8 \uc778\ub371\uc2a4\ub97c \uc9c0\uc815\ud569\ub2c8\ub2e4.  \ub2e4\uc74c\uacfc \uac19\uc740 \ub2e4\uc591\ud55c \ubcc0\uc218\uac00 \uc0ac\uc6a9\ub41c\ub2e4\ub294 \uac83\uc744 \uc54c \uc218 \uc788\uc2b5\ub2c8\ub2e4.\u00a0<code>$COUCHBASE_\uad00\ub9ac\uc790_\uc0ac\uc6a9\uc790\uba85<\/code> \uadf8\ub9ac\uace0\u00a0<code>$Couchbase_\ubc84\ud0b7<\/code>.  \ub7f0\ud0c0\uc784\uc5d0 \uc804\ub2ec\ud560 \uc218 \uc788\uc73c\ubbc0\ub85c \ubbfc\uac10\ud55c \uc815\ubcf4\ub97c \ud558\ub4dc\ucf54\ub529\ud560 \ud544\uc694\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.<\/p>\n<p>HTTP\ub97c \ud1b5\ud55c \uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ucee8\ud14c\uc774\ub108 \ud504\ub85c\ube44\uc800\ub2dd\uc5d0 \ub300\ud55c \uc790\uc138\ud55c \ub0b4\uc6a9\uc740 \ub2e4\uc74c \ubb38\uc11c\uc5d0\uc11c \ud655\uc778\ud560 \uc218 \uc788\ub2e4. <a href=\"https:\/\/www.thepolyglotdeveloper.com\/2017\/04\/using-couchbase-docker-deploying-containerized-nosql-cluster\/\" target=\"_blank\" rel=\"noopener\">\uc774\uc804 \uae30\uc0ac<\/a> \uc5d0 \ub300\ud55c \uae00\uc744 \uc37c\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ud504\ub85c\ube44\uc800\ub2dd \uc2a4\ud06c\ub9bd\ud2b8\uac00 \uc644\ub8cc\ub418\uba74, \uc774\uc81c\u00a0<strong>\ub3c4\ucee4\ud30c\uc77c<\/strong> \ud30c\uc77c\uc744 \ub9cc\ub4ed\ub2c8\ub2e4.  \ud30c\uc77c\uc744 \uc5f4\uace0 \ub2e4\uc74c\uc744 \ud3ec\ud568\ud569\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">\uce74\uc6b0\uce58\ubca0\uc774\uc2a4\uc5d0\uc11c\r\n\r\nCOPY configure.sh \/opt\/couchbase\r\n\r\nCMD [\"\/opt\/couchbase\/configure.sh\"]<\/pre>\n<p>\uc0ac\uc6a9\uc790 \uc9c0\uc815 Docker \uc774\ubbf8\uc9c0\ub294 \uacf5\uc2dd Docker \uc774\ubbf8\uc9c0\ub97c \uae30\ubcf8\uc73c\ub85c \uc0ac\uc6a9\ud558\uace0 \ube4c\ub4dc \ud504\ub85c\uc138\uc2a4 \uc911\uc5d0 \ud504\ub85c\ube44\uc800\ub2dd \uc2a4\ud06c\ub9bd\ud2b8\ub97c \ubcf5\uc0ac\ud55c \ud6c4 \ub7f0\ud0c0\uc784\uc5d0 \uc2e4\ud589\ud569\ub2c8\ub2e4.<\/p>\n<p>\uce74\uc6b0\uce58\ubca0\uc774\uc2a4\uc6a9 \uc0ac\uc6a9\uc790 \uc815\uc758 \uc774\ubbf8\uc9c0\ub97c \ube4c\ub4dc\ud558\ub824\uba74 \ub2e4\uc74c\uc744 \uc2e4\ud589\ud569\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">\ub3c4\ucee4 \ube4c\ub4dc -t \uce74\uc6b0\uce58\ubca0\uc774\uc2a4-\ucee4\uc2a4\ud140 \/\uacbd\ub85c\/\ud22c\/\ub514\ub809\ud1a0\ub9ac\/\uc704\ub4dc\/\ub3c4\ucee4\ud30c\uc77c<\/pre>\n<p>\uc704\uc758 \uba85\ub839\uc5d0\uc11c\u00a0<code>\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ucee4\uc2a4\ud140<\/code> \ub294 \uc774\ubbf8\uc9c0 \uc774\ub984\uc774\uba70, \uc774 \uc774\ubbf8\uc9c0 \uc774\ub984\uc740\u00a0<strong>\ub3c4\ucee4\ud30c\uc77c<\/strong> \ud30c\uc77c\uc744 \ub9cc\ub4ed\ub2c8\ub2e4.<\/p>\n<h2>Java\ub85c Spring Boot RESTful API \uac1c\ubc1c\ud558\uae30<\/h2>\n<p>Java \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \ucee8\ud14c\uc774\ub108\ud654\ud558\uae30 \uc804\uc5d0 \uba3c\uc800 \ube4c\ub4dc\ud574\uc57c \ud569\ub2c8\ub2e4.  Spring Boot\ub97c \uc0ac\uc6a9\ud558\uae30 \ub54c\ubb38\uc5d0 \uc2a4\ud0c0\ud130 \ud504\ub85c\uc81d\ud2b8\ub97c \ub2e4\uc6b4\ub85c\ub4dc\ud574\uc57c \ud569\ub2c8\ub2e4.  \uc774 \uc791\uc5c5\uc740 \ub2e4\uc74c\uc5d0\uc11c \uc27d\uac8c \uc218\ud589\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. <a href=\"https:\/\/start.spring.io\/\" target=\"_blank\" rel=\"noopener\">\uc2a4\ud504\ub9c1 \ucd08\uae30\ud654<\/a> \uc6f9\uc0ac\uc774\ud2b8.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3026 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/03\/spring-boot-initializr.png\" alt=\"Spring Boot Initializr\" width=\"2476\" height=\"1036\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/spring-boot-initializr.png 2476w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/spring-boot-initializr-300x126.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/spring-boot-initializr-1024x428.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/spring-boot-initializr-768x321.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/spring-boot-initializr-1536x643.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/spring-boot-initializr-2048x857.png 2048w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/spring-boot-initializr-20x8.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/spring-boot-initializr-1320x552.png 1320w\" sizes=\"auto, (max-width: 2476px) 100vw, 2476px\" \/><\/p>\n<p>\uc774 \ud504\ub85c\uc81d\ud2b8\uc5d0\uc11c\ub294 \ub2e4\uc74c\uc744 \uc0ac\uc6a9\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4.\u00a0<code>com.couchbase<\/code> \ub0b4\u00a0<strong>\uadf8\ub8f9<\/strong> \uadf8\ub9ac\uace0\u00a0<code>\ub3c4\ucee4<\/code> \ub0b4\u00a0<strong>\uc778\uacf5\ubb3c<\/strong>.  \uc800\ub294 \ub610\ud55c Gradle\uc744 \uc120\ud638\ud558\uae30 \ub54c\ubb38\uc5d0 Maven \ub300\uc2e0 \uc0ac\uc6a9\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ub2e4\uc6b4\ub85c\ub4dc\ud55c \ud504\ub85c\uc81d\ud2b8\ub97c \uc555\ucd95\uc744 \ud480\uace0 \ud504\ub85c\uc81d\ud2b8\uc758\u00a0<strong>src\/main\/resources\/application.properties<\/strong> \ud30c\uc77c\uc744 \ub9cc\ub4ed\ub2c8\ub2e4.  \uc774 \ud30c\uc77c\uc5d0\ub294 \ub2e4\uc74c\uc774 \ud3ec\ud568\ub429\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">couchbase_host=couchbase\r\ncouchbase_\ubc84\ud0b7=\uae30\ubcf8\uac12\r\ncouchbase_\ubc84\ud0b7_\ube44\ubc00\ubc88\ud638=.<\/pre>\n<p>\uc704\uc5d0\uc11c\ub294 \ud638\uc2a4\ud2b8 \uc778\uc2a4\ud134\uc2a4\uac00 \ub2e4\uc74c\uacfc \uac19\uc774 \ud638\ucd9c\ub41c\ub2e4\uace0 \uac00\uc815\ud569\ub2c8\ub2e4.\u00a0<code>\uce74\uc6b0\uce58\ubca0\uc774\uc2a4<\/code> \ub77c\ub294 \uc554\ud638 \uc5c6\ub294 \ubc84\ud0b7\uc774 \uc788\uc2b5\ub2c8\ub2e4.\u00a0<code>\uae30\ubcf8\uac12<\/code>.  \ub85c\uceec\uc5d0\uc11c \ud14c\uc2a4\ud2b8\ud558\ub294 \uacbd\uc6b0 \ud638\uc2a4\ud2b8\ub294 \uc544\ub9c8\ub3c4 localhost\uac00 \ub420 \uac83\uc785\ub2c8\ub2e4.  \uc5b4\uca0c\ub4e0 \uc774\ub7ec\ud55c \ubaa8\ub4e0 \uc18d\uc131\uc740 \ucee8\ud14c\uc774\ub108 \ub7f0\ud0c0\uc784\uc5d0 \ud658\uacbd \ubcc0\uc218\ub97c \ud1b5\ud574 \uc815\uc758\ub429\ub2c8\ub2e4.<\/p>\n<p>\uc774\uc81c \ud504\ub85c\uc81d\ud2b8\uc758\u00a0<strong>src\/main\/java\/com\/couchbase\/DockerApplication.java<\/strong> \ud30c\uc77c\uc744 \ub9cc\ub4ed\ub2c8\ub2e4.  \uc5ec\uae30\uc11c \ud504\ub85c\ud37c\ud2f0\ub97c \ub85c\ub4dc\ud558\uace0 \uc5d4\ub4dc\ud3ec\uc778\ud2b8\ub97c \uc815\uc758\ud558\uaca0\uc2b5\ub2c8\ub2e4.  \uc774 \ud30c\uc77c\uc744 \uc5f4\uace0 \ub2e4\uc74c Java \ucf54\ub4dc\ub97c \ud3ec\ud568\ud558\uc138\uc694:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">\ud328\ud0a4\uc9c0 com.couchbase;\r\n\r\ncom.couchbase.client.java.Bucket\uc744 \uac00\uc838\uc635\ub2c8\ub2e4;\r\ncom.couchbase.client.java.Cluster\ub97c \uac00\uc838\uc635\ub2c8\ub2e4;\r\ncom.couchbase.client.java.CouchbaseCluster\ub97c \uac00\uc838\uc635\ub2c8\ub2e4;\r\nimport com.couchbase.client.java.query.*;\r\ncom.couchbase.client.java.query.consistency.ScanConsistency\ub97c \uac00\uc838\uc635\ub2c8\ub2e4;\r\ncom.couchbase.client.java.document.json.JsonObject\ub97c \uac00\uc838\uc635\ub2c8\ub2e4;\r\ncom.couchbase.client.java.document.JsonDocument\ub97c \uac00\uc838\uc635\ub2c8\ub2e4;\r\norg.springframework.beans.factory.annotation.Value\ub97c \uac00\uc838\uc635\ub2c8\ub2e4;\r\norg.springframework.boot.SpringApplication\uc744 \uac00\uc838\uc635\ub2c8\ub2e4;\r\nimport org.springframework.boot.autoconfigure.*;\r\nimport org.springframework.context.annotation.*;\r\nimport org.springframework.http.*;\r\norg.springframework.web.bind.annotation.*\ub97c \uac00\uc838\uc635\ub2c8\ub2e4;\r\nimport javax.servlet.*;\r\njavax.servlet.http.HttpServletResponse\ub97c \uac00\uc838\uc635\ub2c8\ub2e4;\r\nimport java.util.*;\r\njava.util.concurrent.TimeUnit;\r\n\r\n\uc2a4\ud504\ub9c1 \ubd80\ud305 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\r\nRestController\r\n@RequestMapping(\"\/\")\r\npublic class DockerApplication {\r\n\r\n    @Value(\"${couchbase_host}\")\r\n    \ube44\uacf5\uac1c \ubb38\uc790\uc5f4 \ud638\uc2a4\ud2b8 \uc774\ub984;\r\n\r\n    @Value(\"${couchbase_bucket}\")\r\n    private String \ubc84\ud0b7;\r\n\r\n    @Value(\"${couchbase_bucket_password}\")\r\n    private String password;\r\n\r\n    public @Bean\r\n    \ud074\ub7ec\uc2a4\ud130 \ud074\ub7ec\uc2a4\ud130() {\r\n        \ubc18\ud658 CouchbaseCluster.create(\ud638\uc2a4\ud2b8\uba85);\r\n    }\r\n\r\n    public @Bean\r\n    \ubc84\ud0b7 bucket() {\r\n        return cluster().openBucket(bucket, password);\r\n    }\r\n\r\n    @RequestMapping(value=\"\/\", method= RequestMethod.GET)\r\n    public String root() {\r\n        \"`\/get` \ub610\ub294 `\/save` \uc5d4\ub4dc\ud3ec\uc778\ud2b8\ub97c \ubc29\ubb38\ud574\ubcf4\uc2ed\uc2dc\uc624.\"\ub97c \ubc18\ud658\ud569\ub2c8\ub2e4;\r\n    }\r\n\r\n\r\n    @RequestMapping(value=\"\/get\", method= RequestMethod.GET)\r\n    public Object get() {\r\n        String query = \"SELECT `\" + bucket().name() + \"`.* FROM `\" + bucket().name() + \"`\";\r\n        return bucket().async().query(N1qlQuery.simple(query, N1qlParams.build().consistency(ScanConsistency.REQUEST_PLUS))))\r\n                .flatMap(AsyncN1qlQueryResult::rows)\r\n                .map(result -&gt; result.value().toMap())\r\n                .toList()\r\n                .timeout(10, TimeUnit.SECONDS)\r\n                .toBlocking()\r\n                .single();\r\n    }\r\n\r\n    @RequestMapping(value=\"\/save\", method=RequestMethod.POST)\r\n    public Object save(@RequestBody String json) {\r\n        JsonObject jsonData = JsonObject.fromJson(json);\r\n        JsonDocument document = JsonDocument.create(UUID.randomUUID().toString(), jsonData);\r\n        bucket().insert(document);\r\n        \ubc18\ud658 \uc0c8 ResponseEntity(json, HttpStatus.OK);\r\n    }\r\n\r\n\tpublic static void main(String[] args) { {\r\n\t\tSpringApplication.run(DockerApplication.class, args);\r\n\t}\r\n}<\/pre>\n<p>\uc704\uc5d0\uc11c \ub9ce\uc740 \uc77c\uc774 \uc77c\uc5b4\ub098\uace0 \uc788\uc9c0\ub294 \uc54a\uc2b5\ub2c8\ub2e4.  \ub300\ubd80\ubd84\uc740 \uc0c1\uc6a9\uad6c \ucf54\ub4dc\uc640 \uc784\ud3ec\ud2b8 \ubb38\uc785\ub2c8\ub2e4.  \uc774 \uae00\uc758 \ubaa9\ud45c\ub294 Couchbase\uc640 \ud568\uaed8 Java\ub97c \uc0ac\uc6a9\ud558\ub294 \uac83\uc774 \uc544\ub2c8\ubbc0\ub85c \ucf54\ub4dc\uc758 \uac01 \ubd80\ubd84\uc744 \uc124\uba85\ud558\uc9c0 \uc54a\uaca0\uc2b5\ub2c8\ub2e4.  \ub300\uc2e0 \uc138 \uac1c\uc758 \uc5d4\ub4dc\ud3ec\uc778\ud2b8\uac00 \uc788\uc73c\uba70, \uadf8 \uc911 \ud558\ub098\ub294 \ubc84\ud0b7\uc5d0 \uc788\ub294 \ubaa8\ub4e0 \ubb38\uc11c\ub97c \uac00\uc838\uc624\uace0 \ub2e4\ub978 \ud558\ub098\ub294 \uc0c8 \ubb38\uc11c\ub97c Couchbase\uc5d0 \uc800\uc7a5\ud55c\ub2e4\ub294 \uc810\ub9cc \uc54c\uc544\ub450\uc138\uc694.<\/p>\n<p>\uc800\ucc98\ub7fc Gradle\uc744 \uc0ac\uc6a9\ud558\uace0 \uc788\ub2e4\uba74\u00a0<strong>build.gradle<\/strong> \ud30c\uc77c\ub85c \uc774\ub3d9\ud569\ub2c8\ub2e4.  \uc791\uc5c5\uc744 \uc0dd\uc131\ud558\uace0 \uc885\uc18d\uc131\uc744 \ucd94\uac00\ud574\uc57c \ud569\ub2c8\ub2e4.  \uadc0\ud558\uc758\u00a0<strong>build.gradle<\/strong> \ud30c\uc77c\uc740 \ub2e4\uc74c\uacfc \uac19\uc740 \ubaa8\uc591\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">\ube4c\ub4dc \uc2a4\ud06c\ub9bd\ud2b8 {\r\n\text {\r\n\t\tspringBootVersion = '1.5.2.RELEASE'\r\n\t}\r\n\t\ub9ac\ud3ec\uc9c0\ud1a0\ub9ac {\r\n\t\tmavenCentral()\r\n\t}\r\n\t\uc758\uc874\uc131 {\r\n\t\tclasspath(\"org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}\")\r\n\t}\r\n}\r\n\r\n\ud50c\ub7ec\uadf8\uc778\uc744 \uc801\uc6a9\ud569\ub2c8\ub2e4: 'java'\r\n\ud50c\ub7ec\uadf8\uc778 \uc801\uc6a9: 'eclipse'\r\n\ud50c\ub7ec\uadf8\uc778\uc744 \uc801\uc6a9\ud569\ub2c8\ub2e4: 'org.springframework.boot'\r\n\r\nversion = '0.0.1-SNAPSHOT'\r\nsourceCompatibility = 1.8\r\n\r\n\ub9ac\ud3ec\uc9c0\ud1a0\ub9ac {\r\n\tmavenCentral()\r\n}\r\n\r\n\r\n\uc758\uc874\uc131 {\r\n    compile('org.springframework.boot:spring-boot-starter-web')\r\n\tcompile('org.springframework:spring-tx')\r\n\tcompile('org.springframework.security:spring-security-core')\r\n\tcompile('com.couchbase.client:java-client')\r\n\ttestCompile('org.springframework.boot:spring-boot-starter-test')\r\n}\r\n\r\ntask(run, dependsOn: 'classes', type: JavaExec) {\r\n    main = 'com.couchbase.DockerApplication'\r\n    classpath = sourceSets.main.runtimeClasspath\r\n}<\/pre>\n<p>\uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \ube4c\ub4dc\ud558\ub824\uba74 \ub2e4\uc74c\uc744 \uc2e4\ud589\ud569\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">gradle build -x test<\/pre>\n<p>\uc774\uc81c Docker \uc774\ubbf8\uc9c0\uc5d0 \uc0ac\uc6a9\ud560 JAR \ud30c\uc77c\uc774 \uc0dd\uacbc\uc2b5\ub2c8\ub2e4.<\/p>\n<h2>\uc2a4\ud504\ub9c1 \ubd80\ud2b8 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \uc704\ud55c \uc0ac\uc6a9\uc790 \uc9c0\uc815 \ub3c4\ucee4 \uc774\ubbf8\uc9c0 \ube4c\ub4dc\ud558\uae30<\/h2>\n<p>\uc0ac\uc6a9\uc790 \uc9c0\uc815 \uc774\ubbf8\uc9c0\ub97c \uad6c\ucd95\ud558\ub824\uba74 \ub2e4\uc74c\uc774 \ud544\uc694\ud569\ub2c8\ub2e4.\u00a0<strong>\ub3c4\ucee4\ud30c\uc77c<\/strong> \ud30c\uc77c\uc744 \uc81c\uc790\ub9ac\uc5d0 \ubc30\uce58\ud569\ub2c8\ub2e4.  Java \ud504\ub85c\uc81d\ud2b8\uc758 \ubca0\uc774\uc2a4\uc5d0\u00a0<strong>\ub3c4\ucee4\ud30c\uc77c<\/strong> \ud30c\uc77c\uc744 \uc5f4\uace0 \ub2e4\uc74c\uc744 \ud3ec\ud568\ud558\uc138\uc694:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">FROM openjdk:8\r\n\r\nCOPY .\/build\/libs\/java-project-0.0.1-SNAPSHOT.jar spring-boot.jar\r\n\r\nCMD java -jar spring-boot.jar<\/pre>\n<p>\uc704\uc5d0\uc11c\ub294 \uacf5\uc2dd OpenJDK \uc774\ubbf8\uc9c0\ub97c \uae30\ubcf8\uc73c\ub85c \uc0ac\uc6a9\ud558\uace0 \uc788\uc73c\uba70 \ube4c\ub4dc \uc2dc\uc810\uc5d0 JAR\uc744 \uc774\ubbf8\uc9c0\uc5d0 \ubcf5\uc0ac\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4.  \ubc30\ud3ec \uc2dc\uc5d0\ub294 JAR\uc774 \uc2e4\ud589\ub429\ub2c8\ub2e4.<\/p>\n<p>\uc774 \uc774\ubbf8\uc9c0\ub97c \ube4c\ub4dc\ud558\ub824\uba74 \ub2e4\uc74c\uc744 \uc2e4\ud589\ud569\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">\ub3c4\ucee4 \ube4c\ub4dc -t \ubd04-\ubd80\ud305-\ucee4\uc2a4\ud140 \/\uacbd\ub85c\/\ud22c\/\ub514\ub809\ud1a0\ub9ac\/\uc704\ub4dc\/\ub3c4\ucee4\ud30c\uc77c<\/pre>\n<p>\uc704\uc758 \uba85\ub839\uc740 \uc775\uc219\ud558\uac8c \ubcf4\uc77c \uac83\uc785\ub2c8\ub2e4.  \uc6b0\ub9ac\ub294\u00a0<code>\uc2a4\ud504\ub9c1 \ubd80\ud305 \uc0ac\uc6a9\uc790 \uc9c0\uc815<\/code> \ub514\ub809\ud1a0\ub9ac\uc5d0 \uc788\ub294 \ube14\ub8e8\ud504\ub9b0\ud2b8\ub97c \uc0ac\uc6a9\ud558\uc5ec\u00a0<strong>\ub3c4\ucee4\ud30c\uc77c<\/strong> \ud30c\uc77c\uc744 \ub9cc\ub4ed\ub2c8\ub2e4.<\/p>\n<p>\uc0ac\uc6a9\uc790 \uc9c0\uc815 Docker \uc774\ubbf8\uc9c0 \ub9cc\ub4e4\uae30\uc5d0 \ub300\ud55c \uc790\uc138\ud55c \ub0b4\uc6a9\uc740 \uc774\uc804\uc5d0 \uc791\uc131\ud55c \uae00\uc5d0\uc11c \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4, <a href=\"https:\/\/www.thepolyglotdeveloper.com\/2017\/03\/build-custom-docker-image-containerized-web-application\/\" target=\"_blank\" rel=\"noopener\">\ucee8\ud14c\uc774\ub108\ud654\ub41c \uc6f9 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \uc704\ud55c \uc0ac\uc6a9\uc790 \uc815\uc758 Docker \uc774\ubbf8\uc9c0 \uad6c\ucd95<\/a>.<\/p>\n<h2>\uce74\uc6b0\uce58\ubca0\uc774\uc2a4\uc640 \uc2a4\ud504\ub9c1 \ubd80\ud2b8 \uc774\ubbf8\uc9c0\ub97c \ucee8\ud14c\uc774\ub108\ub85c \ubc30\ud3ec\ud558\uae30<\/h2>\n<p>\uc774\ubbf8\uc9c0\ub97c \ubc30\ud3ec\ud560 \ub54c \uba87 \uac00\uc9c0 \uc635\uc158\uc774 \uc788\uc2b5\ub2c8\ub2e4.  Compose \ud30c\uc77c\uc744 \uc0ac\uc6a9\ud558\uac70\ub098 \ubc14\ub2d0\ub77c \ucee8\ud14c\uc774\ub108\ub85c \ubc30\ud3ec\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.  \uc800\ub294 Compose\uac00 \ub354 \uae54\ub054\ud55c \uc811\uadfc \ubc29\uc2dd\uc774\ub77c\uace0 \uc0dd\uac01\ud558\uae30 \ub54c\ubb38\uc5d0 \uc774 \ubc29\ubc95\uc744 \uc0ac\uc6a9\ud558\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ucef4\ud4e8\ud130\uc758 \uc5b4\ub518\uac00\uc5d0\u00a0<strong>docker-compose.yml<\/strong> \ud30c\uc77c\uc744 \uc5f4\uace0 \ub2e4\uc74c\uc744 \ud3ec\ud568\ud558\uc138\uc694:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">\ubc84\uc804: '2'\r\n\r\n\uc11c\ube44\uc2a4:\r\n    couchbase:\r\n        image: couchbase-custom\r\n        \ud3ec\ud2b8\r\n            - 8091:8091\r\n            - 8092:8092\r\n            - 8093:8093\r\n        \ud658\uacbd:\r\n            - COUCHBASE_ADMINISTRATOR_USERNAME=\uad00\ub9ac\uc790\r\n            - COUCHBASE_ADMINISTRATOR_PASSWORD=\ud328\uc2a4\uc6cc\ub4dc\r\n            - COUCHBASE_BUCKET=\uae30\ubcf8\uac12\r\n            - COUCHBASE_BUCKET_PASSWORD=\uae30\ubcf8\uac12\r\n\r\n    spring-boot:\r\n        \uc774\ubbf8\uc9c0: spring-boot-custom\r\n        \ud3ec\ud2b8\r\n            - 8080:8080\r\n        \ud658\uacbd:\r\n            - COUCHBASE_HOST=couchbase\r\n            - COUCHBASE_BUCKET=\uae30\ubcf8\uac12\r\n            - COUCHBASE_BUCKET_PASSWORD==\r\n        \uc7ac\uc2dc\uc791: \ud56d\uc0c1<\/pre>\n<p>\uc704 \ud30c\uc77c\uc5d0\uc11c\ub294 \uc6b0\ub9ac\uac00 \uad6c\ucd95\ud55c \uc0ac\uc6a9\uc790 \uc815\uc758 \uc774\ubbf8\uc9c0\ub97c \uc815\uc758\ud558\uace0 \ud638\uc2a4\ud2b8 \uba38\uc2e0\uc5d0 \ud3ec\ud2b8 \ub9e4\ud551\uc744 \uc218\ud589\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4.  \ud2b9\ud788 \ud765\ubbf8\ub85c\uc6b4 \uc810\uc740\u00a0<code>\ud658\uacbd<\/code> \uc635\uc158\uc744 \ucd94\uac00\ud569\ub2c8\ub2e4.  \uc774\ub7ec\ud55c \ubcc0\uc218\ub294 \uc6b0\ub9ac\uc758\u00a0<strong>application.properties<\/strong> \uadf8\ub9ac\uace0\u00a0<strong>configure.sh<\/strong> \ud30c\uc77c.<\/p>\n<p>Compose\ub97c \uc0ac\uc6a9\ud558\uc5ec \ucee8\ud14c\uc774\ub108\ub97c \ubc30\ud3ec\ud558\ub824\uba74 \ub2e4\uc74c\uc744 \uc2e4\ud589\ud558\uc138\uc694:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">\ub3c4\ucee4-\ucef4\ud3ec\uc9c0\ud2b8 \uc2e4\ud589 -d --service-ports --\uc774\ub984 \uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \uce74\uc6b0\uce58\ubca0\uc774\uc2a4\r\ndocker-compose run -d --service-ports --name spring-boot spring-boot<\/pre>\n<p>\uc704\uc758 \uba85\ub839\uc5d0 \ub300\ud574 \uc8fc\uc758\ud560 \uc810\uc774 \uc788\uc2b5\ub2c8\ub2e4.  Couchbase\ub294 \uc989\uc2dc \ubc30\ud3ec\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.  Java \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \ubc30\ud3ec\ud558\uae30 \uc804\uc5d0 \uc644\uc804\ud788 \uc2e4\ud589\ub420 \ub54c\uae4c\uc9c0 \uae30\ub2e4\ub824\uc57c \ud569\ub2c8\ub2e4.  \ub450 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc774 \ubaa8\ub450 \uc2e4\ud589\ub41c \ud6c4\uc5d0\ub294 \uc6f9 \ube0c\ub77c\uc6b0\uc800\uc5d0\uc11c Java \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc73c\ub85c \uc774\ub3d9\ud558\uc5ec \ud655\uc778\ud569\ub2c8\ub2e4.<\/p>\n<h2>\uacb0\ub860<\/h2>\n<p>\ubc29\uae08 \uc0ac\uc6a9\uc790 \uc9c0\uc815 <a href=\"https:\/\/www.docker.com\" target=\"_blank\" rel=\"noopener\">Docker<\/a> \uc774\ubbf8\uc9c0\ub97c Spring Boot \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uacfc Couchbase Server\uc5d0 \ubc30\ud3ec\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.  \uac01\uac01\uc744 \ucee8\ud14c\uc774\ub108\ub85c \ubc30\ud3ec\ud55c \ud6c4\uc5d0\ub294 \uc11c\ub85c \ud1b5\uc2e0\ud560 \uc218 \uc788\uc5b4 \uc720\uc9c0 \uad00\ub9ac\uc5d0 \ub9e4\uc6b0 \ud3b8\ub9ac\ud569\ub2c8\ub2e4.<\/p>\n<p>Node.js\ub85c \uc774 \uc791\uc5c5\uc744 \uc218\ud589\ud558\ub294 \ub370 \uad00\uc2ec\uc774 \uc788\uc73c\uc2dc\uba74 <a href=\"https:\/\/www.couchbase.com\/blog\/ko\/deploy-node-js-couchbase-web-application-docker-containers\/\" target=\"_blank\" rel=\"noopener\">\uc774\uc804 \uae30\uc0ac<\/a> \uc774 \uc8fc\uc81c\uc5d0 \ub300\ud55c \uae00\uc744 \uc791\uc131\ud588\uc2b5\ub2c8\ub2e4.  Couchbase\uc6a9 Java SDK\uc5d0 \ub300\ud574 \uc790\uc138\ud788 \uc54c\uc544\ubcf4\ub824\uba74 \ub2e4\uc74c\uacfc \uac19\uc774 \ud655\uc778\ud558\uc138\uc694. <a href=\"https:\/\/www.couchbase.com\/blog\/ko\/developers\/\" target=\"_blank\" rel=\"noopener\">\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \uac1c\ubc1c\uc790 \ud3ec\ud138<\/a>.<\/p>","protected":false},"excerpt":{"rendered":"<p>Not too long ago I wrote about containerizing a Node.js RESTful API and Couchbase Server to demonstrate how easy it is to deploy web applications in a quick and reliable fashion. \u00a0In that guide we created a simple API, built [&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":[1815,1816,1818],"tags":[1897,1520,1519,1776],"ppma_author":[9032],"class_list":["post-2986","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-best-practices-and-tutorials","category-couchbase-server","category-java","tag-containerized","tag-containers","tag-docker","tag-web-application"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.5 (Yoast SEO v26.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Use Docker to Deploy a Containerized Java with Couchbase Web Application<\/title>\n<meta name=\"description\" content=\"Learn how to deploy a containerized Java RESTful API and Couchbase NoSQL database using Docker and custom, hand-crafted, images.\" \/>\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\/ko\/docker-deploy-containerized-java-couchbase-web-application\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Use Docker to Deploy a Containerized Java with Couchbase Web Application\" \/>\n<meta property=\"og:description\" content=\"Learn how to deploy a containerized Java RESTful API and Couchbase NoSQL database using Docker and custom, hand-crafted, images.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/ko\/docker-deploy-containerized-java-couchbase-web-application\/\" \/>\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-04-18T12:00:23+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-07-21T07:41:13+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/03\/spring-boot-initializr.png\" \/>\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=\"5\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/docker-deploy-containerized-java-couchbase-web-application\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/docker-deploy-containerized-java-couchbase-web-application\/\"},\"author\":{\"name\":\"Nic Raboy, Developer Advocate, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1\"},\"headline\":\"Use Docker to Deploy a Containerized Java with Couchbase Web Application\",\"datePublished\":\"2017-04-18T12:00:23+00:00\",\"dateModified\":\"2023-07-21T07:41:13+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/docker-deploy-containerized-java-couchbase-web-application\/\"},\"wordCount\":1049,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/docker-deploy-containerized-java-couchbase-web-application\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"keywords\":[\"containerized\",\"containers\",\"docker\",\"web application\"],\"articleSection\":[\"Best Practices and Tutorials\",\"Couchbase Server\",\"Java\"],\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/docker-deploy-containerized-java-couchbase-web-application\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/docker-deploy-containerized-java-couchbase-web-application\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/docker-deploy-containerized-java-couchbase-web-application\/\",\"name\":\"Use Docker to Deploy a Containerized Java with Couchbase Web Application\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/docker-deploy-containerized-java-couchbase-web-application\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/docker-deploy-containerized-java-couchbase-web-application\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2017-04-18T12:00:23+00:00\",\"dateModified\":\"2023-07-21T07:41:13+00:00\",\"description\":\"Learn how to deploy a containerized Java RESTful API and Couchbase NoSQL database using Docker and custom, hand-crafted, images.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/docker-deploy-containerized-java-couchbase-web-application\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/docker-deploy-containerized-java-couchbase-web-application\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/docker-deploy-containerized-java-couchbase-web-application\/#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\/docker-deploy-containerized-java-couchbase-web-application\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Use Docker to Deploy a Containerized Java with Couchbase Web Application\"}]},{\"@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\":\"ko-KR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@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\":\"ko-KR\",\"@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\/ko\/author\/nic-raboy-2\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Docker\ub97c \uc0ac\uc6a9\ud558\uc5ec Couchbase \uc6f9 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc73c\ub85c \ucee8\ud14c\uc774\ub108\ud654\ub41c Java \ubc30\ud3ec\ud558\uae30","description":"Docker\uc640 \uc218\uc791\uc5c5\uc73c\ub85c \ub9cc\ub4e0 \uc0ac\uc6a9\uc790 \uc9c0\uc815 \uc774\ubbf8\uc9c0\ub97c \uc0ac\uc6a9\ud558\uc5ec \ucee8\ud14c\uc774\ub108\ud654\ub41c Java RESTful API \ubc0f Couchbase NoSQL \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \ubc30\ud3ec\ud558\ub294 \ubc29\ubc95\uc744 \uc54c\uc544\ubcf4\uc138\uc694.","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\/ko\/docker-deploy-containerized-java-couchbase-web-application\/","og_locale":"ko_KR","og_type":"article","og_title":"Use Docker to Deploy a Containerized Java with Couchbase Web Application","og_description":"Learn how to deploy a containerized Java RESTful API and Couchbase NoSQL database using Docker and custom, hand-crafted, images.","og_url":"https:\/\/www.couchbase.com\/blog\/ko\/docker-deploy-containerized-java-couchbase-web-application\/","og_site_name":"The Couchbase Blog","article_author":"https:\/\/www.facebook.com\/thepolyglotdeveloper","article_published_time":"2017-04-18T12:00:23+00:00","article_modified_time":"2023-07-21T07:41:13+00:00","og_image":[{"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/03\/spring-boot-initializr.png","type":"","width":"","height":""}],"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":"5\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/docker-deploy-containerized-java-couchbase-web-application\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/docker-deploy-containerized-java-couchbase-web-application\/"},"author":{"name":"Nic Raboy, Developer Advocate, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1"},"headline":"Use Docker to Deploy a Containerized Java with Couchbase Web Application","datePublished":"2017-04-18T12:00:23+00:00","dateModified":"2023-07-21T07:41:13+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/docker-deploy-containerized-java-couchbase-web-application\/"},"wordCount":1049,"commentCount":1,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/docker-deploy-containerized-java-couchbase-web-application\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","keywords":["containerized","containers","docker","web application"],"articleSection":["Best Practices and Tutorials","Couchbase Server","Java"],"inLanguage":"ko-KR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/docker-deploy-containerized-java-couchbase-web-application\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/docker-deploy-containerized-java-couchbase-web-application\/","url":"https:\/\/www.couchbase.com\/blog\/docker-deploy-containerized-java-couchbase-web-application\/","name":"Docker\ub97c \uc0ac\uc6a9\ud558\uc5ec Couchbase \uc6f9 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc73c\ub85c \ucee8\ud14c\uc774\ub108\ud654\ub41c Java \ubc30\ud3ec\ud558\uae30","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/docker-deploy-containerized-java-couchbase-web-application\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/docker-deploy-containerized-java-couchbase-web-application\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2017-04-18T12:00:23+00:00","dateModified":"2023-07-21T07:41:13+00:00","description":"Docker\uc640 \uc218\uc791\uc5c5\uc73c\ub85c \ub9cc\ub4e0 \uc0ac\uc6a9\uc790 \uc9c0\uc815 \uc774\ubbf8\uc9c0\ub97c \uc0ac\uc6a9\ud558\uc5ec \ucee8\ud14c\uc774\ub108\ud654\ub41c Java RESTful API \ubc0f Couchbase NoSQL \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \ubc30\ud3ec\ud558\ub294 \ubc29\ubc95\uc744 \uc54c\uc544\ubcf4\uc138\uc694.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/docker-deploy-containerized-java-couchbase-web-application\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/docker-deploy-containerized-java-couchbase-web-application\/"]}]},{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/docker-deploy-containerized-java-couchbase-web-application\/#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\/docker-deploy-containerized-java-couchbase-web-application\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Use Docker to Deploy a Containerized Java with Couchbase Web Application"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ube14\ub85c\uadf8","description":"NoSQL \ub370\uc774\ud130\ubca0\uc774\uc2a4, Couchbase","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":"ko-KR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ube14\ub85c\uadf8","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"ko-KR","@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, \uac1c\ubc1c\uc790 \uc639\ud638\uc790, Couchbase","image":{"@type":"ImageObject","inLanguage":"ko-KR","@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":"\ub2c9 \ub77c\ubcf4\uc774\ub294 \ucd5c\uc2e0 \uc6f9 \ubc0f \ubaa8\ubc14\uc77c \uac1c\ubc1c \uae30\uc220\uc744 \uc639\ud638\ud558\ub294 \uc0ac\ub78c\uc785\ub2c8\ub2e4. \uadf8\ub294 Java, JavaScript, Golang \ubc0f Angular, NativeScript, Apache Cordova\uc640 \uac19\uc740 \ub2e4\uc591\ud55c \ud504\ub808\uc784\uc6cc\ud06c\uc5d0 \ub300\ud55c \uacbd\ud5d8\uc774 \uc788\uc2b5\ub2c8\ub2e4. Nic\uc740 \uc6f9 \ubc0f \ubaa8\ubc14\uc77c \uac1c\ubc1c\uc744 \ubcf4\ub2e4 \uc27d\uac8c \uc774\ud574\ud560 \uc218 \uc788\ub3c4\ub85d \uc790\uc2e0\uc758 \uac1c\ubc1c \uacbd\ud5d8\uc5d0 \ub300\ud574 \uae00\uc744 \uc4f0\uace0 \uc788\uc2b5\ub2c8\ub2e4.","sameAs":["https:\/\/www.thepolyglotdeveloper.com","https:\/\/www.facebook.com\/thepolyglotdeveloper","https:\/\/x.com\/nraboy"],"url":"https:\/\/www.couchbase.com\/blog\/ko\/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":"\ub2c9 \ub77c\ubcf4\uc774\ub294 \ucd5c\uc2e0 \uc6f9 \ubc0f \ubaa8\ubc14\uc77c \uac1c\ubc1c \uae30\uc220\uc744 \uc639\ud638\ud558\ub294 \uc0ac\ub78c\uc785\ub2c8\ub2e4. \uadf8\ub294 Java, JavaScript, Golang \ubc0f Angular, NativeScript, Apache Cordova\uc640 \uac19\uc740 \ub2e4\uc591\ud55c \ud504\ub808\uc784\uc6cc\ud06c\uc5d0 \ub300\ud55c \uacbd\ud5d8\uc774 \uc788\uc2b5\ub2c8\ub2e4. Nic\uc740 \uc6f9 \ubc0f \ubaa8\ubc14\uc77c \uac1c\ubc1c\uc744 \ubcf4\ub2e4 \uc27d\uac8c \uc774\ud574\ud560 \uc218 \uc788\ub3c4\ub85d \uc790\uc2e0\uc758 \uac1c\ubc1c \uacbd\ud5d8\uc5d0 \ub300\ud574 \uae00\uc744 \uc4f0\uace0 \uc788\uc2b5\ub2c8\ub2e4."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/2986","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/users\/63"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/comments?post=2986"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/2986\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media?parent=2986"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/categories?post=2986"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/tags?post=2986"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/ppma_author?post=2986"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}