{"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><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>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>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>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>\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>\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>\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>\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><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><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>\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>\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>\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_memberships_contains_paid_content":false,"footnotes":""},"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_featured_media_url":"","jetpack_sharing_enabled":true,"_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}]}}