{"id":3229,"date":"2023-06-04T12:22:10","date_gmt":"2023-06-04T03:22:10","guid":{"rendered":"http:\/\/43.203.250.216\/?p=3229"},"modified":"2023-08-27T20:42:10","modified_gmt":"2023-08-27T11:42:10","slug":"multi-container-app%ec%9d%98-bad-gateway502-%eb%ac%b8%ec%a0%9c-%eb%94%94%eb%b2%84%ea%b9%85","status":"publish","type":"post","link":"https:\/\/litcoder.com\/?p=3229","title":{"rendered":"Multi-container app\uc758 Bad Gateway(502) \ubb38\uc81c \ub514\ubc84\uae45"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/github.com\/intel\/Training-and-Learning-Suite\" data-type=\"URL\" data-id=\"https:\/\/github.com\/intel\/Training-and-Learning-Suite\">Intel Training and Learning Suite(TLS)<\/a>\ub294 \ucc98\uc74c\uc73c\ub85c \uacbd\ud5d8\ud574\ubcf4\ub294 multi-container application\uc774\ub2e4. \uc911\uac04\uc5d0 native\uac1c\ubc1c\uc744 \uc704\ud55c \ud658\uacbd \uc124\uc815\uc744 \ub07c\uc6cc \ub123\uc5b4 \ubcf4\ub824\uace0 \uc774\uac83 \uc800\uac83 \uc2dc\ub3c4\ud558\ub294 \uc911\uc5d0 web interface\ub97c \ub2f4\ub2f9\ud558\ub294 tls_proxy\ub77c\ub294 docker\uac00 Bad Gateway\ub97c \ub744\uc6b0\uba74\uc11c \ubb38\uc81c\uac00 \uc0dd\uacbc\ub2e4. \ub514\ubc84\uae45 \ud558\ub294 \uacfc\uc815\uc5d0\uc11c \uc0ac\uc6a9\ud574 \ubcf8 docker-compose\uba85\ub839\uc5b4 \ub4e4\uc758 \uc4f0\uc784\uc0c8\uac00 \uc720\uc6a9\ud560 \uac83 \uac19\uc544\uc11c \uae30\ub85d\uc73c\ub85c \ub0a8\uaca8 \ub454\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Port number\uc640 docker\ucc3e\uae30:  docker-compose ps<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Web browser\ub85c \uc11c\ube44\uc2a4\uc5d0 \uc811\uadfc\ud558\uba74(https:\/\/localhost) Bad Gateway(502) error\uac00 \ubc1c\uc0dd\ud558\ub294\ub370 \ucc98\uc74c\uc73c\ub85c web-browser\uc758 \uc811\uc18d \uc694\uccad\uc744 \ubc1b\uc544\uc11c \ucc98\ub9ac\ud558\ub294 docker container\ub294 <code>docker-compose ps<\/code> \uba85\ub839\uc5b4\ub85c docker image\ubcc4\ub85c listening\ud558\ub294 port number\ub4e4\uc744 \ucc3e\uc744 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">TLS\uc758 \uacbd\uc6b0\ub294 tls_proxy\uac00 http\uc694\uccad \ucc98\ub9ac\ub97c \uc704\ud55c 80\ubc88\uacfc https\ub97c \uc704\ud55c 443\ubc88 port\ub97c listening\ud558\uace0 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ docker-compose ps\n    Name                  Command               State     Ports                     \n------------------------------------------------------------------\ntls_apiui      .\/webservices\/start.sh           Exit 0                                                                                                                                                     \ntls_core       .\/start.sh                       Up                                                                                                                                                         \ntls_mongo      docker-entrypoint.sh --tls ...   Up       127.0.0.1:27017->27017\/tcp                                                                                                                        \ntls_openvino   \/bin\/bash                        Exit 0                                                                                                                                                     \ntls_proxy      \/docker-entrypoint.sh \/bin ...   Up       0.0.0.0:443->443\/tcp,:::443->443\/tcp, 80\/tcp                                                                                                      \ntls_rabbitmq   docker-entrypoint.sh \/init ...   Up       0.0.0.0:15672->15672\/tcp,:::15672->15672\/tcp, 15691\/tcp, 15692\/tcp, 0.0.0.0:1883->1883\/tcp,:::1883->1883\/tcp, 25672\/tcp, 4369\/tcp, 5671\/tcp, 5672\/tcp, 0.0.0.0:8883->8883\/tcp,:::8883->8883\/tcp\ntls_redis      docker-entrypoint.sh sh st ...   Up       127.0.0.1:6379->6379\/tcp\n<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Docker\uc758 log \ubcf4\uae30: docker logs tls_proxy<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">tls_proxy\uac00 \uc694\uccad\uc744 \ucc98\ub9ac\ud558\uc9c0 \ubabb\ud55c \uc774\uc720\ub294 <code>docker logs &lt;\uc11c\ubc84 \uc774\ub984&gt;<\/code>\uc73c\ub85c \ud655\uc778\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ docker logs tls_proxy\n2023\/05\/31 01:31:06 [error] 12#12: *5 connect() failed (113: Host is unreachable) while connecting to upstream, client: 172.31.0.1, server: , request: \"GET \/ HTTP\/1.1\", upstream: \"http:\/\/172.31.0.8:3000\/\", host: \"localhost\"\n...<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc0ac\uc124 \ub124\ud2b8\uc6cc\ud06c\uc778 172.31.0.x\ub85c docker service\ub4e4\uc744 \uad6c\uc131\ud588\ub294\ub370, \uadf8\uc911 \uc778\ud130\ud398\uc774\uc2a4\ub97c \ub2f4\ub2f9\ud558\ub294 172.31.0.1 docker\uac00  172.31.0.8\uc5d0 \uc694\uccad\uc744 \uc5f0\uacb0\ud574 \uc8fc\uc5b4\uc57c \ud558\ub294\ub370 \uc774 \ubd80\ubd84\uc5d0\uc11c \uc624\ub958\uac00 \ub098\uace0 \uc788\ub294 \ubaa8\uc591\uc774\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Docker network \ud655\uc778: docker network ls<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\ud604\uc7ac docker\uc6a9\uc73c\ub85c \uad6c\uc131\ub418\uc5b4 \uc788\ub294 network\uc744 \ud655\uc778\ud574 \ubcf4\uba74 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ docker network ls\nNETWORK ID     NAME                DRIVER    SCOPE\nd15b28e7a1d5   bridge              bridge    local\nacc99b5947d1   cvat_cvat           bridge    local\n4485972f8274   host                host      local\n6f21c18ba66f   none                null      local\n20d132ccfc2a   tls_default         bridge    local<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uac01 \ub124\ud2b8\uc6cc\ud06c\uc758 \uad6c\uc131\uc744 \uac80\uc0ac(inspect)\ud574 \ubcfc \uc218 \uc788\ub294\ub370 <code>docker network inspect cvat_cvat<\/code>\uba85\ub839\uc5b4\ub85c \ud574\ub2f9 \ub124\ud2b8\uc6cc\ud06c\ub97c \uac80\uc0ac\ud574 \ubcf4\uba74 \ub2e4\uc74c\uacfc \uac19\uc774 \uc704\uc5d0\uc11c \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\ub358 ip\uc778 172.21.0.8\ubc88(tls_openvino)\uc774 \ub4f1\ub85d\ub418\uc9c0 \uc54a\uc740 \uac83\uc744 \ubcfc \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ docker network inspect cvat_cvat|grep \"Name\\|IPv4Address\"\n        \"Name\": \"cvat_cvat\",\n                \"Name\": \"cvat_redis\",\n                \"IPv4Address\": \"172.31.0.4\/16\",\n                \"Name\": \"cvat_opa\",\n                \"IPv4Address\": \"172.31.0.3\/16\",\n                \"Name\": \"cvat_db\",\n                \"IPv4Address\": \"172.31.0.5\/16\",\n                \"Name\": \"traefik\",\n                \"IPv4Address\": \"172.31.0.2\/16\",\n                \"Name\": \"cvat\",\n                \"IPv4Address\": \"172.31.0.6\/16\",\n                \"Name\": \"cvat_ui\",\n                \"IPv4Address\": \"172.31.0.7\/16\",\n                \"Name\": \"tls_proxy\",\n                \"IPv4Address\": \"172.31.0.9\/16\",<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Docker\uc758 log \ubcf4\uae30: docker logs tls_openvino<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\ubb38\uc81c\uac00 \ub418\uace0 \uc788\ub294 docker container\ub97c \ud2b9\uc815\ud588\uc73c\ub2c8 <code>docker logs tls_openvino<\/code>\uba85\ub839\uc5b4\ub85c \ub2e4\uc2dc \ud55c\ubc88 \ud574\ub2f9 container\uc758 \ub85c\uadf8\ub97c \ud655\uc778\ud574 \ubcf8\ub2e4.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">error: A hook (`userconfig`) failed to load!\nerror: Failed to lift app: Error: Attempted to `require('\/home\/tls\/webservices\/apiserver\/config\/env\/production.js')`, but an error occurred:\n--\nError: ENOENT: no such file or directory, open '..\/..\/thirdparty\/security\/ca\/ca_certificate.pem'\n    at Object.openSync (fs.js:498:3)\n    at Object.readFileSync (fs.js:394:35)\n    at Object.&lt;anonymous> (\/home\/tls\/webservices\/apiserver\/config\/env\/production.js:70:15)<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>..\/..\/third party\/security\/ca\/ca_certificate.pem<\/code>\ud30c\uc77c\uc744 \uc77d\uc9c0 \ubabb\ud574\uc11c \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\ub2e4\uace0 \ub098\uc624\ub294\ub370, \uc2e4\uc81c\ub85c container\uc5d0\uc11c\ub294 \ud574\ub2f9 \ud30c\uc77c\uc758 \uc704\uce58\ub97c \uc0c1\ub300 \uacbd\ub85c\ub85c \uc811\uadfc\ud558\uc9c0 \uc54a\ub294\ub2e4. Call stack\uc5d0 \ub098\uc640 \uc788\ub294 <code>production.js<\/code> line 70\uadfc\ucc98\uc758 \ub0b4\uc6a9\uc744 \ubcf4\uba74 \uba3c\uc800 \uc808\ub300\uacbd\ub85c\uc778 <code>\/run\/secrets\/*<\/code>\uc5d0 \uc811\uadfc\uc744 \uc2dc\ub3c4\ud560 \ub54c \uc608\uc678\uac00 \ubc1c\uc0dd\ud574\uc11c \uc0c1\ub300 \uacbd\ub85c\ub85c \uc811\uadfc\uc744 \uc2dc\ub3c4\ud558\uace0(\uac1c\ubc1c\uc6a9 \ucf54\ub4dc\ub85c \ucd94\uc815) \uc774 \ub9c8\uc800\ub3c4 \uc2e4\ud328\ud55c \uac83\uc774 \ub85c\uadf8\uc5d0 \ub098\uc628 \uac83\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>apiserver\/config\/env\/production.js<\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"js\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"true\" data-enlighter-lineoffset=\"65\" data-enlighter-title=\"\" data-enlighter-group=\"\">try {\n  tls_ca = fs.readFileSync(\"\/run\/secrets\/ca_tls\")\n  tls_server_cert = fs.readFileSync(\"\/run\/secrets\/tlsserver_cert\")\n  tls_server_key = fs.readFileSync(\"\/run\/secrets\/tlsserver_key\")\n} catch (err) {\n  tls_ca = fs.readFileSync(\"..\/..\/thirdparty\/security\/ca\/ca_certificate.pem\");\n  tls_server_cert = fs.readFileSync(\"..\/..\/thirdparty\/security\/TLS_server_cert.crt\");\n  tls_server_key = fs.readFileSync(\"..\/..\/thirdparty\/security\/TLS_server_key.pem\");\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc815\ub9ac\ud558\uc790\uba74, \ubb38\uc81c\ub294 server secret\uc744 \uc0dd\uc131\ud558\ub294 \uacfc\uc815\uc5d0\uc11c \ubc1c\uc0dd\ud55c \uac83\uc774 docker image\uc0c1\uc758 key file path read\uc5d0\uc11c \uc624\ub958\ub97c \ubc1c\uc0dd\uc2dc\ud0a4\uace0 tls_openvino container\uac00 \uc81c\ub300\ub85c \ub728\uc9c0 \ubabb\ud55c \ubb38\uc81c\uc774\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\ud574\uacb0(?)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\ubb38\uc81c\uc758 \uc6d0\uc778\uc740 \uc0dd\uac01\ubcf4\ub2e4 \uc2f1\uac70\uc6e0\ub294\ub370, docker-compose \uba85\ub839\uc5b4\ub97c \uc2e4\ud589\uc2dc\ud0a4\ub294 native\uc6a9 script\uc5d0\uc11c \ub2e4\uc74c \uc904\uc744 \uc5f0\uacb0\ud558\uae30 \uc704\ud55c <code>\\<\/code>\ub97c \ube7c\uba39\ub294 \uc0ac\uc18c\ud55c(!) Bash \ubb38\ubc95 \uc624\ub958\uac00 \ubc1c\uc0dd \ud588\uc5c8\uace0, \uc774 \uc624\ub958\uac00 \ubb34\uc2dc\ub41c \ucc44\ub85c <code>docker-compose build <\/code>\uba85\ub839\uc5b4\uac00 \uacc4\uc18d \uc218\ud589\ub418\uc5b4 service\uac00 up\ub418\ub294 \uc0c1\ud669\uae4c\uc9c0 \ub41c \uac83\uc774\uc5c8\ub2e4.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"diff\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">-       &amp;&amp; pip install -U pip wheel setuptools\n+       &amp;&amp; pip install -U pip wheel setuptools \\\n        &amp;&amp; pip install \\<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc704\uc758 \uc218\uc815\uacfc \ud568\uaed8 \uc624\ub958\uac00 \uc0dd\uae30\uba74 build\ub97c \uba48\ucd94\ub3c4\ub85d <code>set -e<\/code>\ub97c bash script\uc5d0 \ucd94\uac00 \ud558\ub294 \uac83\uc73c\ub85c \uc774 \ubb38\uc81c\ub294 \uc77c\ub2e8\ub77d \ub418\uc5c8\ub2e4.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Intel Training and Learning Suite(TLS)\ub294 \ucc98\uc74c\uc73c\ub85c \uacbd\ud5d8\ud574\ubcf4\ub294 multi-container application\uc774\ub2e4. \uc911\uac04\uc5d0 native\uac1c\ubc1c\uc744 \uc704\ud55c \ud658\uacbd \uc124\uc815\uc744 \ub07c\uc6cc \ub123\uc5b4 \ubcf4\ub824\uace0 \uc774\uac83 \uc800\uac83 \uc2dc\ub3c4\ud558\ub294 \uc911\uc5d0 web interface\ub97c \ub2f4\ub2f9\ud558\ub294 tls_proxy\ub77c\ub294 docker\uac00 Bad Gateway\ub97c \ub744\uc6b0\uba74\uc11c \ubb38\uc81c\uac00 \uc0dd\uacbc\ub2e4. \ub514\ubc84\uae45 \ud558\ub294 \uacfc\uc815\uc5d0\uc11c \uc0ac\uc6a9\ud574 \ubcf8 docker-compose\uba85\ub839\uc5b4 \ub4e4\uc758 \uc4f0\uc784\uc0c8\uac00 \uc720\uc6a9\ud560 \uac83 \uac19\uc544\uc11c \uae30\ub85d\uc73c\ub85c \ub0a8\uaca8 \ub454\ub2e4. Port number\uc640 docker\ucc3e\uae30: docker-compose ps Web browser\ub85c \uc11c\ube44\uc2a4\uc5d0 \uc811\uadfc\ud558\uba74(https:\/\/localhost) Bad [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[4,6],"tags":[315,314,36,72,312],"class_list":["post-3229","post","type-post","status-publish","format-standard","hentry","category-linux","category-tools","tag-container","tag-cvat","tag-docker","tag-linux","tag-tls"],"jetpack_sharing_enabled":true,"jetpack-related-posts":[{"id":4286,"url":"https:\/\/litcoder.com\/?p=4286","url_meta":{"origin":3229,"position":0},"title":"OpenProject\ub97c Docker\ub85c \uc124\uce58","author":"litcoder","date":"2026\ub144 4\uc6d4 8\uc77c","format":false,"excerpt":"\ud504\ub85c\uc81d\ud2b8 \uad00\ub9ac \ub3c4\uad6c\ub85c \ub9ce\uc774 \uc0ac\uc6a9\ub418\ub294 Atlassian\uc758 JIRA\ub97c \ub300\uccb4\ud558\uae30 \uc704\ud55c \uc624\ud508\uc18c\uc2a4 \ud504\ub85c\uc81d\ud2b8\ub4e4 \uc911 \uac00\uc7a5 \uc778\uae30\uac00 \uc788\ub2e4\ub294 OpenProject\ub97c \ud68c\uc0ac\uc5d0\uc11c \uc9c4\ud589\ud558\ub294 \ud504\ub85c\uc81d\ud2b8\ub97c \uc704\ud574 \uc0ac\uc6a9\ud574 \ubcf4\uae30\ub85c \ud588\ub2e4. Docker\ub85c \uc124\uce58\ud558\uae30 \uc900\ube44 Source code clone OpenProject\ub294 GitHub repo\uc5d0\uc11c tag\uac00 \uc544\ub2cc branch\uba85\uc744 stable\/<version> \ud615\uc2dd\uc73c\ub85c \ub9b4\ub9ac\uc988\ud558\uace0 \uc788\ub294 \ub4ef \ud558\ub2e4. 2026\ub144 4\uc6d4 \ud604\uc7ac \uac00\uc7a5 \ucd5c\uc2e0 \ubc84\uc804\uc778 17\ubc84\uc804\uc744 \ub2e4\uc74c\uacfc \uac19\uc774\u2026","rel":"","context":"&quot;Linux&quot;\uc5d0\uc11c","block_context":{"text":"Linux","link":"https:\/\/litcoder.com\/?cat=4"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/litcoder.com\/wp-content\/uploads\/2026\/03\/openproject17_login.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/litcoder.com\/wp-content\/uploads\/2026\/03\/openproject17_login.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/litcoder.com\/wp-content\/uploads\/2026\/03\/openproject17_login.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":2115,"url":"https:\/\/litcoder.com\/?p=2115","url_meta":{"origin":3229,"position":1},"title":"[Tip] Mac version docker\uc5d0\uc11c \ub744\uc6b4 (\uc6f9) \uc11c\ubc84\uc5d0 \uc811\uc18d\ud558\uae30","author":"litcoder","date":"2019\ub144 9\uc6d4 13\uc77c","format":false,"excerpt":"Mac version Docker\uc5d0 \ub744\uc6cc\ub454 web server\uc5d0 host\uc5d0\uc11c \uc811\uc18d\ud558\ub824\uba74 \uc5b4\ub5bb\uac8c \ud574\uc57c \ud560\uae4c? \uc2e4\ud589\ud560 \ub54c '--network=host'\ub97c \uc8fc\uba74 \ub41c\ub2e4\ub294 \uc598\uae30\uac00 \uc788\uc5b4\uc11c \ud574\ubd24\ub294\ub370, Mac\uc5d0\uc11c\ub294 \ud1b5\ud558\uc9c0 \uc54a\uc558\ub2e4 \uc774\uac74 linux\uc6a9\uc774\ub77c\uace0... Networking features in Docker Desktop for Mac\uc5d0 \ub530\ub77c \uc2e4\ud589\ud560 \ub54c port\ub97c \ub9e4\ud551\ud558\ub294 \uac83\uc73c\ub85c \uc774 \ubb38\uc81c\ub97c \ud574\uacb0\ud560 \uc218 \uc788\ub2e4. Docker\uc758 9090 port\uc5d0 Mac\uc758 9090 port\ub85c \uc811\uadfc\ud558\ub824\uba74 \ub2e4\uc74c\uacfc\u2026","rel":"","context":"&quot;Linux&quot;\uc5d0\uc11c","block_context":{"text":"Linux","link":"https:\/\/litcoder.com\/?cat=4"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/litcoder.com\/wp-content\/uploads\/2019\/09\/SC_docker_webserver.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/litcoder.com\/wp-content\/uploads\/2019\/09\/SC_docker_webserver.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/litcoder.com\/wp-content\/uploads\/2019\/09\/SC_docker_webserver.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":2965,"url":"https:\/\/litcoder.com\/?p=2965","url_meta":{"origin":3229,"position":2},"title":"Docker\ub85c OpenGrok \uc124\uce58","author":"litcoder","date":"2021\ub144 3\uc6d4 14\uc77c","format":false,"excerpt":"\uc798 \uc4f0\uace0 \uc788\ub358 OpenGrok \uc11c\ubc84\uac00 \uac11\uc790\uae30 \ub9db\uc774 \uac00\ub294 \ubc14\ub78c\uc5d0 \ubd80\ub7b4\ubd80\ub7b4 \ub300\uc548\uc744 \ucc3e\uc544\uc57c \ud588\ub294\ub370 \ub9c8\ub545\ud55c \uc11c\ubc84\uac00 \uc5c6\uc5b4\uc11c \ub85c\uceec \uba38\uc2e0\uc5d0 Docker\ub85c \uc124\uce58\ud558\ub294 \ubc29\ubc95\uc744 \ucc3e\uc544 \ubcf4\uc558\ub2e4. \uc5ec\uae30 \uc18c\uac1c\ub41c \ub0b4\uc6a9\uc740 Docker Hub\uc5d0\uc11c \uc790\uc138\ud55c \uc124\uba85\uc744 \ucc3e\uc744 \uc218 \uc788\ub2e4. Docker\uac00 \uc124\uce58\ub418\uc5b4 \uc788\ub2e4\uba74 command\ucc3d\uc5d0\uc11c \ub2e4\uc74c\uc758 \uba85\ub839\uc73c\ub85c OpenGrok docker\ub97c pull\ud55c\ub2e4. docker pull opengrok\/docker Pulling\uc774 \ub05d\ub098\uba74 \ubaa9\uc801\uc5d0 \uc18c\uc2a4\uc640 indexing\uacb0\uacfc\uac00\u2026","rel":"","context":"&quot;Linux&quot;\uc5d0\uc11c","block_context":{"text":"Linux","link":"https:\/\/litcoder.com\/?cat=4"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1760,"url":"https:\/\/litcoder.com\/?p=1760","url_meta":{"origin":3229,"position":3},"title":"Travis CI \uc124\uc815\uacfc docker image \uc0ac\uc6a9","author":"litcoder","date":"2019\ub144 1\uc6d4 14\uc77c","format":false,"excerpt":"GitHub project\uc5d0 CI\ub97c \ubd99\uc774\uace0 \uc2f6\uc740\ub370 Jenkins server\uac00 \ud68c\uc0ac firewall \uc548\uc5d0 \ub4e4\uc5b4 \uc788\uc5b4\uc11c GitHub\uc5d0\uc11c \uc9c1\uc811 webhook\uc744 \ubd99\uc77c \uc218 \uc5c6\ub294 \ubb38\uc81c\uac00 \uc788\ub2e4. Jenkins\uc758 GitHub plugin\uc73c\ub85c tunneling\uc744 \uc124\uc815\ud558\ub294 \ubc29\ubc95 \ub4f1 \uc788\uae30\ub294 \ud558\uc9c0\ub9cc \ub2e4\ub978 CI \uc635\uc158\ub4e4\uc744 \uc0b4\ud3b4 \ubcf4\ub358\uc911 Open source project\uc5d0 \ub300\ud574\uc11c\ub294 \ubb34\ub8cc\ub77c\ub294\u00a0Travis CI\uac00 \uc788\ub2e4\ub294 \uac83\uc744 \uc54c\uac8c \ub418\uc5c8\ub2e4. Travis CI\ub294 \uae30\ubcf8\uc73c\ub85c Ubuntu\ub97c \uc9c0\uc6d0\ud558\uace0 \uadf8\u2026","rel":"","context":"&quot;Programming&quot;\uc5d0\uc11c","block_context":{"text":"Programming","link":"https:\/\/litcoder.com\/?cat=5"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3116,"url":"https:\/\/litcoder.com\/?p=3116","url_meta":{"origin":3229,"position":4},"title":"CARLA client\ub97c build\ud574\uc57c \ud558\ub294\ub370 clang-8\uc774 \uc5c6\ub304\ub2e4.","author":"litcoder","date":"2022\ub144 7\uc6d4 27\uc77c","format":false,"excerpt":"2022\ub144 9\uc6d4 \ud604\uc7ac CARLA simulator\uc758 \ucd5c\uc2e0 \ubc84\uc804\uc778 0.9.13\uc73c\ub85c PythonAPI\ub97c \ube4c\ub4dc\ud558\ub824\uace0 \ud558\uba74 clang-8 version\uc744 \uc694\uad6c\ud558\ub294\ub370 Ubuntu 22.04\uc5d0\uc11c\ub294 clang-8\uc758 repository\ub97c \ucd94\uac00\ud558\uace0 \uc124\uce58 \uc2dc\ub3c4\ud558\uba74 \ub2e4\uc74c\uacfc \uac19\uc774 \uc758\uc874\uc131 \uc624\ub958\uac00 \uc0dd\uae34\ub2e4. The following packages have unmet dependencies: clang-8 : Depends: libllvm8 (>= 1:8~svn298832-1~) but it is not going to be installed Depends: libstdc++-5-dev but it\u2026","rel":"","context":"&quot;Linux&quot;\uc5d0\uc11c","block_context":{"text":"Linux","link":"https:\/\/litcoder.com\/?cat=4"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3545,"url":"https:\/\/litcoder.com\/?p=3545","url_meta":{"origin":3229,"position":5},"title":"\ubcf5\ubd99\uc758 \ud568\uc815, \ub514\ub809\ud1a0\ub9ac\ub97c \uc0ad\uc81c\ud560 \uc218 \uc5c6\ub2e4?","author":"litcoder","date":"2025\ub144 9\uc6d4 26\uc77c","format":false,"excerpt":"\ub9e4\uc6b0 \uac04\ub2e8\ud55c \ub514\ub809\ud1a0\ub9ac \uc0dd\uc131 \uba85\ub839\uc5b4\uac00 \uc758\ub3c4\ub300\ub85c \ub3d9\uc791\ud558\uc9c0 \uc54a\uace0 \uc2e4\ud328\ud588\ub2e4. \uc65c \uc77c\uae4c? ls \uba85\ub839\uc5b4\uc758 \uacb0\uacfc\ub97c \ubcf4\uba74 \uc54c \uc218 \uc788\ub294\ub370, \ubd80\ubaa8 \ub514\ub809\ud1a0\ub9ac\ub97c \uc0dd\uc131\ud558\ub294 -p \uc635\uc158\uc774 \ub3d9\uc791\ud558\uc9c0 \uc54a\uace0 \ub514\ub809\ud1a0\ub9ac\ub85c \uc0dd\uc131\ub418\uc5b4 \ubc84\ub838\ub2e4. \uadf8 \ub2e4\uc74c\uc73c\ub85c \uc874\uc7ac\ud558\uc9c0 \uc54a\ub294 ~\/docker\/shared \ub514\ub809\ud1a0\ub9ac\ub97c \uc0dd\uc131\ud558\ub824\uace0 \ud588\uc73c\ub2c8 \uba85\ub839\uc5b4\uac00 \uc2e4\ud328\ud55c \uac83\uc774\ub2e4. \uc774 mkdir \uba85\ub839\uc5b4\ub294 \uc0ac\uc2e4 \uc5b4\ub518\uac00\uc5d0\uc11c \ubcf5\uc0ac \ubd99\uc5ec\ub123\uae30 \ud55c \uac83\uc778\ub370, \uc774\ub807\uac8c \uc798\u2026","rel":"","context":"&quot;Linux&quot;\uc5d0\uc11c","block_context":{"text":"Linux","link":"https:\/\/litcoder.com\/?cat=4"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/litcoder.com\/wp-content\/uploads\/2025\/08\/remove_unicode_en_dash.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/litcoder.com\/wp-content\/uploads\/2025\/08\/remove_unicode_en_dash.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/litcoder.com\/wp-content\/uploads\/2025\/08\/remove_unicode_en_dash.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/litcoder.com\/wp-content\/uploads\/2025\/08\/remove_unicode_en_dash.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/litcoder.com\/wp-content\/uploads\/2025\/08\/remove_unicode_en_dash.png?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/litcoder.com\/wp-content\/uploads\/2025\/08\/remove_unicode_en_dash.png?resize=1400%2C800&ssl=1 4x"},"classes":[]}],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/litcoder.com\/index.php?rest_route=\/wp\/v2\/posts\/3229","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/litcoder.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/litcoder.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/litcoder.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/litcoder.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3229"}],"version-history":[{"count":28,"href":"https:\/\/litcoder.com\/index.php?rest_route=\/wp\/v2\/posts\/3229\/revisions"}],"predecessor-version":[{"id":3268,"href":"https:\/\/litcoder.com\/index.php?rest_route=\/wp\/v2\/posts\/3229\/revisions\/3268"}],"wp:attachment":[{"href":"https:\/\/litcoder.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3229"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/litcoder.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3229"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/litcoder.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3229"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}