ShinyProxy์ ์ ๋ฆด๋ฆฌ์ค ๋ฒ์ (2.2.0)์์๋ DT๋ฅผ ์๋ฒ ์ฒ๋ฆฌ ๋ชจ๋๋ก ์ฌ์ฉํ๋ ๋ชจ๋ ์ฑ์ด ์ค๋จ๋ฉ๋๋ค. ShinyProxy ๋ก๊ทธ์ Request Methods 'Post' not supported ๋ผ๊ณ ํ์๋๋ ๋์ ๋ธ๋ผ์ฐ์ ๋ Ajax ์ค๋ฅ๋ฅผ ํ์ํฉ๋๋ค.
library(shiny)
ui <- fluidPage(DT::DTOutput('tbl'))
server <- function(input, output, session) {
output$tbl <- DT::renderDT(iris, server = TRUE)
}
shinyApp(ui, server)
์ค์ ๋ก ์ด๋ฅผ ์ํด docker-compose ์์ ๋ฅผ ์ค์ ํ์ต๋๋ค( https://github.com/shrektan/shinyproxy-docker-compose-example ์ฐธ์กฐ).
๊ฐ์ฌ ํด์! ์ฐ๋ฆฌ๋ ์ด๊ฒ์ ์ฌํํ ์ ์๊ณ ์์ ์ค์ ๋๋ค.
@shrektan ๋ฌธ์ ๋ฅผ ๋ณด๊ณ ํด ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค.
์์ ์ฌํญ์ด ์ปค๋ฐ๋์์ต๋๋ค.
https://github.com/openanalytics/containerproxy/commit/6455abdaed031297baf600f5e71e2242b689d940
์ด ๊ฐ๋ฐ์ ๋น๋๋ฅผ ์๋ํด๋ณด๊ณ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋๋์ง ํ์ธํด ์ฃผ์๊ฒ ์ต๋๊น?
https://nexus.openanalytics.eu/nexus/content/repositories/snapshots/eu/openanalytics/shinyproxy/2.2.1-SNAPSHOT/shinyproxy-2.2.1-20190329.093240-2.jar
@fmichielssen ๋น ๋ฅธ ์์ ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. DT์ fileInput()
๋ชจ๋ dev ๋น๋์์ ์ ๋๋ก ์๋ํ๋์ง ํ์ธํ ์ ์์ต๋๋ค.
ํ์ธํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค, @shrektan! ShinyProxy 2.2.1์ ์ผ๋ถ๋ก ์ถ์
๋ฐฉ๊ธ 2.2.1๋ก ์๋ก ์ค์น ํ๋๋ฐ @shrektan์ด ๋ณด๊ณ ํ ๊ฒ๊ณผ ๋์ผํ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
๊ทธ๋ฐ ๋ค์, shinyproxy.log์์ ๋ค์์ ์ป์ต๋๋ค.
2019-03-31 21:27:33.548 ERROR 9925 --- [XNIO-2 I/O-3] io.undertow.proxy : UT005028: Proxy request to /proxy_endpoint/b77c8f8f-8dc9-45c3-a858-e12c7e33e159/session/cf6134effe616504495d1d75171f0546/dataobj/de_main_table failed
io.undertow.server.TruncatedResponseException: null
at io.undertow.client.http.HttpRequestConduit.truncateWrites(HttpRequestConduit.java:711) ~[undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
at io.undertow.conduits.AbstractFixedLengthStreamSinkConduit.terminateWrites(AbstractFixedLengthStreamSinkConduit.java:256) ~[undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
at org.xnio.conduits.ConduitStreamSinkChannel.shutdownWrites(ConduitStreamSinkChannel.java:178) ~[xnio-api-3.3.8.Final.jar!/:3.3.8.Final]
at io.undertow.channels.DetachableStreamSinkChannel.shutdownWrites(DetachableStreamSinkChannel.java:79) ~[undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
at io.undertow.server.handlers.proxy.ProxyHandler$HTTPTrailerChannelListener.handleEvent(ProxyHandler.java:754) ~[undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
at io.undertow.server.handlers.proxy.ProxyHandler$ProxyAction$1.completed(ProxyHandler.java:646) [undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
at io.undertow.server.handlers.proxy.ProxyHandler$ProxyAction$1.completed(ProxyHandler.java:561) [undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
at io.undertow.client.http.HttpClientExchange.invokeReadReadyCallback(HttpClientExchange.java:212) [undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
at io.undertow.client.http.HttpClientConnection.initiateRequest(HttpClientConnection.java:410) [undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
at io.undertow.client.http.HttpClientConnection.sendRequest(HttpClientConnection.java:343) [undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
at io.undertow.server.handlers.proxy.ProxyHandler$ProxyAction.run(ProxyHandler.java:561) [undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
at io.undertow.util.SameThreadExecutor.execute(SameThreadExecutor.java:35) [undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
at io.undertow.server.HttpServerExchange.dispatch(HttpServerExchange.java:815) [undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
at io.undertow.server.handlers.proxy.ProxyHandler$ProxyClientHandler.completed(ProxyHandler.java:316) [undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
at io.undertow.server.handlers.proxy.ProxyHandler$ProxyClientHandler.completed(ProxyHandler.java:290) [undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
at io.undertow.server.handlers.proxy.ProxyConnectionPool.connectionReady(ProxyConnectionPool.java:338) [undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
at io.undertow.server.handlers.proxy.ProxyConnectionPool.connect(ProxyConnectionPool.java:525) [undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
at io.undertow.server.handlers.proxy.LoadBalancingProxyClient.getConnection(LoadBalancingProxyClient.java:301) [undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
at eu.openanalytics.containerproxy.util.ProxyMappingManager$1.getConnection(ProxyMappingManager.java:88) [containerproxy-0.8.1.jar!/:0.8.1]
at io.undertow.server.handlers.proxy.ProxyHandler$ProxyClientHandler.run(ProxyHandler.java:310) [undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
at org.xnio.nio.WorkerThread.safeRun(WorkerThread.java:582) [xnio-nio-3.3.8.Final.jar!/:3.3.8.Final]
at org.xnio.nio.WorkerThread.run(WorkerThread.java:466) [xnio-nio-3.3.8.Final.jar!/:3.3.8.Final]
ํฅ๋ฏธ๋ก์ด ์ ์ ์ด๊ฒ์ด ๋ค๋ฅธ ํจํค์ง์ธ shinyWidget์ ์ํฅ์ ๋ฏธ์น๋ค๋ ๊ฒ์ ๋๋ค. insertUI๋ฅผ ์ฌ์ฉํ์ฌ ์์ฑ๋๋ ์ ๋ ฅ์ด ๋ง์ด ์์ผ๋ฉฐ ์๋ ๊ฐ์กฐ ํ์๋ ๋๋กญ๋ค์ด ๋ชฉ๋ก์ ๊ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค(๋์ )์์ ๊ฐ์ ธ์ต๋๋ค. ๋ก์ปฌ๋ก ์คํํ๋ฉด ๋ชจ๋ ๊ฒ์ด ํ๋ฅญํ๊ฒ ์คํ๋ฉ๋๋ค(์ค์ ๊ฐ์ ์ป์). Shinyproxy์ ๋ฐฐํฌํ ๋ NA1, NA2, NA3...๋งค์ฐ ์ด์ํฉ๋๋ค.
๋๋ 2.1.0์์ ์ ์๋ํ๊ณ ์๋ค๊ณ ์ธ๊ธํด์ผํฉ๋๋ค. ์ด๊ฒ์ด ์ฐจ์ด๊ฐ ๋๋ ๊ฒฝ์ฐ LetsEncrypt ์ธ์ฆ์์ ํจ๊ป nginx ๋ค์์ shinyproxy๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
@bogdanrau ๋น ๋ฅด๊ฒ ์ฌํํ ์ ์๋ ๋๋ฏธ ์์ ์ฑ( @shrektan์์ ์ ๊ณตํ
@tverbeke ์ด์ 2.2.1์ ๋ฐฐํฌํ ์ ์๋์ง ๊ถ๊ธํฉ๋๋ค. ์์ ๋์์ต๋๊น?
์๋ ํ์ธ์ @dylancis : ์ฐ๋ฆฌ ํ ์คํธ์ @shrektan์ ์ํด ํ์ธ๋ ๋๋ก ์๋ ๋ฌธ์ ๋ ํ์คํ ์์ ๋์์ต๋๋ค. @bogdanrau ๊ฐ ๋ณด๊ณ ํ ๋ฌธ์ ์ ๊ฒฝ์ฐ ์ฌํ ๊ฐ๋ฅํ ์๊ฐ ์์ง ์๊ฑฐ๋(๋ค๋ฅธ ์ฌ์ฉ์์ ํ์ธ์ ์ฌ์ ํ ๋ฌธ์ ๊ฐ ์์).
@tverbeke , ๋ฐฉ๊ธ @shrektan์์ ์ ๊ณตํ ์ํ ์ฑ์ ์๋ํ๋๋ฐ ํด๋น ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. ๋ด๊ฐ ๋ณผ ์์๋ ์ ์ผํ ์ฐจ์ด์ ์ .jar ํ์ผ์ ์ฌ์ฉํ๋ ๋์ .deb๋ฅผ ์๋น์ค๋ก ์ฌ์ฉํ๊ณ ์๋ค๋ ๊ฒ์ ๋๋ค. .deb ํ์ผ์ ์ฌ์ฉํ๋ ์ฌ๋์ด ์์ต๋๊น?
2.2.1
์ ํจ๊ป ์ฌ๊ธฐ์์ ์ ์๋ํฉ๋๋ค.
2.2.1
์ ํจ๊ป ์ฌ๊ธฐ์์ ์ ์๋ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ deb ์ค์น ํ๋ก๊ทธ๋จ์ ์ฌ์ฉํ๊ณ ์์ต๋๊น, ์๋๋ฉด jar ํ์ผ์ ์ฌ์ฉํ๊ณ ์์ต๋๊น? .deb ํ์ผ์ ์ฌ์ฉํ์ฌ ์ฒ์๋ถํฐ ์ VM์ ๋ง๋ค์์ง๋ง ์ด๋ค ์ด์ ๋ก๋ ๋์ผํ ๋ฌธ์ ๊ฐ ๊ณ์ ๋ฐ์ํ์ต๋๋ค.
.deb ํ์ผ์ด ๋ญ๊ฐ์?
@shrektan : Shinyproxy ๋ค์ด๋ก๋ ํ์ด์ง(https://www.shinyproxy.io/downloads/)๋ฅผ ๋ณด๋ฉด ํ๋ซํผ ๋ ๋ฆฝ์ ์ธ ํ์ผ(.jar) ๋๋ ์ค์นํ Ubuntu ์ ์ฉ deb ํ์ผ์ ๋ค์ด๋ก๋ํ ์ ์์ต๋๋ค. dpkg์ ํจ๊ป. ํ๋ซํผ ๋ ๋ฆฝ ํ์ผ๊ณผ ๋น๊ตํ์ฌ ์ ํํ์ต๋๋ค.
@bogdanrau์ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
๋ด ์ค์ : nginx ๋ค์์ shinyproxy 2.2.1(ํ๋ซํผ ๋
๋ฆฝ์ ์ธ .jar)์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
ShinyProxy์์ ์ ํํ ์ธ์ฆ ๋ฐฉ๋ฒ์ ๋ฐ๋ผ ์ด ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. @shrektan (docker pull shrektan/rdocker4working)์ ์๋ฅผ nginx, ShinyProxy 2.2.1 ๋ฐ authentication: simple๊ณผ ํจ๊ป ์ฌ์ฉํ๋ฉด ๋ชจ๋ ๊ฒ์ด ์ ์๋ํฉ๋๋ค. ์ธ์ฆ: keycloak์ผ๋ก ์ ํํ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. Keycloak ์ธ์ฆ ์์ฒด๊ฐ ์๋ํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
nginx์ ํจ๊ป keycloak๋ ์ฌ์ฉํ๊ณ ์์์ ํ์ธํ ์ ์์ต๋๋ค.
๋ํ ๋ฒ์ 2.1.0(๋ง์ง๋ง์ผ๋ก ์๋ํ๋ ๊ฒ์ผ๋ก ์๋ ค์ง)์์ ์ด ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์ฌ์ง์ด 2.2.1๋ ์๋ํ์ง ์์ต๋๋ค.
Traefik ๋ฆฌ๋ฒ์ค ํ๋ก์ v1.7.12 ๋ค์ ํ๋ซํผ ๋
๋ฆฝ ํญ์๋ฆฌ๋ฅผ ๊ฐ์ ธ์ค๋ dockerized shinyproxy๋ฅผ ์คํํฉ๋๋ค.
์ธ์ฆ/๊ถํ ๋ถ์ฌ๋ฅผ ์ํด keycloak v6.0.1์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
ajax๊ฐ ํ์ฑํ๋(server=TRUE) ๋ฐ์ดํฐ ํ
์ด๋ธ์ ๋ณผ ์ ์๋๋ก ๋ฒ์ 2.1๋ก ๋๋๋ ค์ผ ๋นํ์ฑํ๋์์ ๋ ์ต์ ๋ฒ์ ์์ ์๋ํฉ๋๋ค.
ํด๋น ๋ฒ๊ทธ์ ๋ํ ์์์ด๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
๋๋ ์ ํํ ๊ฐ์ ๋ฌธ์ ๋ก ์คํํ๊ณ ๋ฌธ์ ๊ฐ keycloak ์ธ์ฆ๊ณผ ๊ฒฐํฉํ์ฌ ๋ฐ์ํ๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
Ubuntu 18.04.2 LTS ์์คํ ์ dockerized ํ๊ฒฝ์์ shinyproxy-2.3.0.jar๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. Nginx๋ letsencrypt SSL ์ธ์ฆ์์ ํจ๊ป ์ญ๋ฐฉํฅ ํ๋ก์๋ก ์ฌ์ฉ๋ฉ๋๋ค.
์-๋ฐ์ง์ด-์ฑ:
library(shiny)
library(DT)
ui <- fluidPage(DT::dataTableOutput('tbl'))
server <- function(input, output, session) {
output$tbl <- DT::renderDataTable(data.frame(Col_1=c(1:10), Col_2=c(11:20)))
}
shinyApp(ui, server)
Shinyproxy ๋ฐ keycloak-auth(btw. ๋์ผํ ์๋ฒ์์ ์คํ)๋ก ์์ ์์ ๋ฅผ ์คํํ๋ ค๊ณ ํ๋ฉด ์ธ๊ธ๋ 503 Service Unavailable AJAX ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. server=FALSE๋ฅผ ์ค์ ํ๋ฉด ํด๋น ์ค๋ฅ๊ฐ ํด๊ฒฐ๋์ง๋ง ํฐ ํ ์ด๋ธ์์๋ ๋ฌธ์ ๊ฐ ๋์ง ์์ต๋๋ค.
application.yml์์ ๊ฐ๋จํ auth ๋๋ ldap ์ผ๋ก ์ ํํ ๋์ผํ ์์คํ (docker,shinyproxy,nginx ์ค์ )์ด ๋ฌธ์ ์์ด ์คํ
billy34์ ๊ฐ์ ๋ฌธ์
ShinyProxy 2.3.0์์ DT::renderDataTable์ ์ฌ์ฉํ๋ฉด ์ฌ์ ํ ๋์ผํ ajax ์ค๋ฅ 503์ด ์์ต๋๋ค.
์ธ์ฆ/๊ถํ ๋ถ์ฌ์ keycloak v7.0.0 ์ฌ์ฉ
๊ทธ๋ฌ๋ 2.1๋ก ๋ฐ๋๋กํ๋ฉด ์ ์๋ํฉ๋๋ค.
์์ ์ฑ
library(shiny)
ui <- fluidPage(DT::dataTableOutput('tbl'))
server <- function(input, output, session) {
output$tbl <- DT::renderDataTable({
DT::datatable(iris, class = 'cell-border stripe')
})
}
๋๋ dockerized Shiny Proxy > 2.1(๊ฐ๋จํ ์ธ์ฆ ๋ฐฉ๋ฒ ์ฌ์ฉ) ๋ด์์ ์คํ๋๋ RStudio์ ํ์ผ์ ์
๋ก๋ ํ๋ฉด์ @bogdanrau ๊ฐ ์ธ๊ธํ ๊ฒ๊ณผ ๋์ผํ TruncatedResponseException
๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. https://github.com/openanalytics/shinyproxy/issues/170
'๋๋'๋ฅผ ์ถ๊ฐํ๋ฉด ๋ฉ๋๋ค. ๋ฌธ์ ๋ Keycloak ์ธ์ฆ ๋ฐฑ์๋์ ์์ผ๋ฉฐ ๋ฌ๋ฆฌ ํ์๋์ง ์์ต๋๋ค. 2.1๋ก ๋๋๋ฆฌ๋ฉด ์์๋๋ก ์๋ํฉ๋๋ค.
KeyCloak Auth ๋ฐ ShinyProxy ๋ฒ์ > 2.1.0์์๋ ์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
nginx(ssl ์ฌ์ฉ) ๋ฐ keycloak ์ธ์ฆ ์๋น์ค์์ ๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค. ๊ทธ๋ฌ๋ DT๋ ํคํด๋กํน ์์ด ์๋ฒฝํ๊ฒ ํ์๋ฉ๋๋ค.
์ฒจ๋ถ๋ฅผ ์ฐธ์กฐํ์ญ์์ค!
nginx(ssl ์ฌ์ฉ) ๋ฐ keycloak ์ธ์ฆ ์๋น์ค์์ ๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค. ๊ทธ๋ฌ๋ DT๋ ํคํด๋กํน ์์ด ์๋ฒฝํ๊ฒ ํ์๋ฉ๋๋ค.
์ฒจ๋ถ๋ฅผ ์ฐธ์กฐํ์ญ์์ค!
Shinyproxy.io์ ShinyProxy 2.3.0 ๋ณ
Keycloak์ผ๋ก ๋ฒ์ํ ์ ์์์ต๋๋ค. ์์ ์ฌํญ์ ๋ค์ ๋ฆด๋ฆฌ์ค์์ ์ ๊ณต๋ฉ๋๋ค.
Keycloak์ผ๋ก ๋ฒ์ํ ์ ์์์ต๋๋ค. ์์ ์ฌํญ์ ๋ค์ ๋ฆด๋ฆฌ์ค์์ ์ ๊ณต๋ฉ๋๋ค.
๋๋๋ ค์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค!
์ด๋ค ์ข
๋ฅ์ ์ธ์ฆ๋ ์์ด ๋์ผํ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. content-type: multipart/form-data์ POST ์์ฒญ์ ํ ๋. ์ด ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ๋ ๋ฒ์ ์ ์ฐจ์ด์ ์ด ๋ฌด์์ธ์ง ์ ์ ์์ต๋๋ค. ๋๋๋ฆฌ๊ธฐ๊ฐ ์ต์
์ด ์๋ ๊ฒฝ์ฐ ๋ช ๊ฐ์ง ํด๊ฒฐ์ฑ
์ ์ ์ํ์ญ์์ค. Btw ๋๋ shinyproxy ๋ค์ ํ๋ผ์คํฌ๋ฅผ ์คํ ์ค์
๋๋ค.
๊ฐ์ฌ ํด์.
@tverbeke ์ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋ <dev>
๋ถ๊ธฐ์ ์ค๋
์ท์ ํธ์ํด ์ฃผ์๊ฒ ์ต๋๊น? ์๋ง๋ ์ด๊ธฐ ํ
์คํธ๋ <stable>
๋ถ๊ธฐ๋ฅผ ์
๋ฐ์ดํธํ๊ธฐ ์ ์ ์์ ์ด ํ์ํ ์ ์๋ ๋ค๋ฅธ ๊ฒ์ ๋ฐ๊ฒฌํ ์ ์์ต๋๋ค.
๋ฏธ๋ฆฌ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
@jaysnm ์์ ์ฌํญ์ containerproxy์ ๊ฐ๋ฐ ๋ถ๊ธฐ์ ์์ต๋๋ค.
@jaysnm ๋น๋ถ๊ฐ ์ Oracle Java๋ก ์ปดํ์ผํด์ผ ํฉ๋๋ค. Sun.security.krb5.KrbTgsReq ํด๋์ค์ ์์ฑ์๋ Oracle Java์ OpenJDK์์ ๋ค๋ฅด๋ฉฐ ์ฐ๋ฆฌ๋ ์๊ณ ์์ต๋๋ค.
๊ณต์ ๋ฒ์ 2.3.1์์๋ ๋ง์นจ๋ด ๋์๊ฒ ์ ์๋ํฉ๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ๋ซ์ ์๊ฐ #140?
ํผ๋๋ฐฑ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค, @Dusan-Dingarac
์๋ ํ์ธ์, ShinyProxy 2.3.1์์ 2.4.1๋ก ์ ๊ทธ๋ ์ด๋ํ ํ์๋ ๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค. ๋ฒ๊ทธ๋ฅผ ๋ค์ ์ด ์ ์์ต๋๊น?
๋ธ๋ผ์ฐ์ ์์:
DataTables warning: table id=DataTables_Table_0 - Ajax error. For more information about this error, please see http://datatables.net/tn/7
์ค์ด๋ํ๋ก์์
at io.undertow.server.handlers.proxy.ProxyConnectionPool.connect(ProxyConnectionPool.java:548) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] โ
โ at io.undertow.server.handlers.proxy.LoadBalancingProxyClient.getConnection(LoadBalancingProxyClient.java:316) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] โ
โ at eu.openanalytics.containerproxy.util.ProxyMappingManager$1.getConnection(ProxyMappingManager.java:88) ~[containerproxy-0.8.5.jar!/:0.8.5] โ
โ at io.undertow.server.handlers.proxy.ProxyHandler$ProxyClientHandler.run(ProxyHandler.java:310) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] โ
โ at org.xnio.nio.WorkerThread.safeRun(WorkerThread.java:612) ~[xnio-nio-3.8.0.Final.jar!/:3.8.0.Final] โ
โ at org.xnio.nio.WorkerThread.run(WorkerThread.java:479) ~[xnio-nio-3.8.0.Final.jar!/:3.8.0.Final] โ
โ 2020-10-23 15:33:30.211 DEBUG 1 --- [ XNIO-1 I/O-2] io.undertow.request.error-response : Setting error code 503 for exchange HttpServerExchange{ POST /system-recommendation-dashboard/pr โ
โ oxy_endpoint/3913e3ea-8e4d-4c7a-9bf7-4418b3064b26/session/2baa425f53c271bc590b7d1a0c335a89/dataobj/tab_Cov_Linea_O} โ
โ java.lang.RuntimeException: null โ
โ at io.undertow.server.HttpServerExchange.setStatusCode(HttpServerExchange.java:1416) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] โ
โ at io.undertow.server.handlers.proxy.ProxyHandler.handleFailure(ProxyHandler.java:668) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] โ
โ at io.undertow.server.handlers.proxy.ProxyHandler$HTTPTrailerChannelListener.handleEvent(ProxyHandler.java:769) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] โ
โ at io.undertow.server.handlers.proxy.ProxyHandler$ProxyAction$1.completed(ProxyHandler.java:646) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] โ
โ at io.undertow.server.handlers.proxy.ProxyHandler$ProxyAction$1.completed(ProxyHandler.java:561) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] โ
โ at io.undertow.client.http.HttpClientExchange.invokeReadReadyCallback(HttpClientExchange.java:212) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] โ
โ at io.undertow.client.http.HttpClientConnection.initiateRequest(HttpClientConnection.java:414) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] โ
โ at io.undertow.client.http.HttpClientConnection.sendRequest(HttpClientConnection.java:347) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] โ
โ at io.undertow.server.handlers.proxy.ProxyHandler$ProxyAction.run(ProxyHandler.java:561) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] โ
โ at io.undertow.util.SameThreadExecutor.execute(SameThreadExecutor.java:35) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] โ
โ at io.undertow.server.HttpServerExchange.dispatch(HttpServerExchange.java:821) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] โ
โ at io.undertow.server.handlers.proxy.ProxyHandler$ProxyClientHandler.completed(ProxyHandler.java:316) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] โ
โ at io.undertow.server.handlers.proxy.ProxyHandler$ProxyClientHandler.completed(ProxyHandler.java:290) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] โ
โ at io.undertow.server.handlers.proxy.ProxyConnectionPool.connectionReady(ProxyConnectionPool.java:353) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] โ
โ at io.undertow.server.handlers.proxy.ProxyConnectionPool.connect(ProxyConnectionPool.java:548) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] โ
โ at io.undertow.server.handlers.proxy.LoadBalancingProxyClient.getConnection(LoadBalancingProxyClient.java:316) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] โ
โ at eu.openanalytics.containerproxy.util.ProxyMappingManager$1.getConnection(ProxyMappingManager.java:88) ~[containerproxy-0.8.5.jar!/:0.8.5] โ
โ at io.undertow.server.handlers.proxy.ProxyHandler$ProxyClientHandler.run(ProxyHandler.java:310) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] โ
โ at org.xnio.nio.WorkerThread.safeRun(WorkerThread.java:612) ~[xnio-nio-3.8.0.Final.jar!/:3.8.0.Final] โ
โ at org.xnio.nio.WorkerThread.run(WorkerThread.java:479) ~[xnio-nio-3.8.0.Final.jar!/:3.8.0.Final]
๋๋ ๋ถํ๊ฐ ์ญ๋ฐฉํฅ ํ๋ก์๋ก traefik๋ฅผ ์ฌ์ฉํ์ฌ ๊ท ํ๊ณผ ShinyProxy์์ด DT์ ๊ฐ์ ๋ฌธ์ ์ ๋ด์ฐฉํ์ต๋๋ค. DT ๋ฐ ๋ก๋ ๋ฐธ๋ฐ์ฑ์ ์ฐ๊ฒฐ๋ ์ ์์ต๋๊น?
๋ด ์ชฝ์์ ์กฐ์ฌํด์ผ ํด
์ด ๋ฌธ์ ๋ฅผ ๋ณธ ์ ์ด ์์ต๋๊น https://github.com/rstudio/DT/issues/849 ?
๋ํ traefik์ ๋ก๋ ๋ฐธ๋ฐ์๋ก ์ฌ์ฉํ๊ณ ์์ง๋ง 2.3.1๋ก ๋์๊ฐ์ ์ ๋๋ก ์๋ํฉ๋๋ค. 2.4.0 ๋ฐ 2.4.1์์๋ ํด๋น ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
์๋ ํ์ธ์ @giordyb
์ด ๋ฌธ์ ์ ์ฒซ ๋ฒ์งธ ๊ฒ์๋ฌผ์์ ShinyProxy 2.4.1๋ก ์์ ์ฝ๋๋ฅผ ํ
์คํธํ๋๋ฐ ์ฌ์ ํ ์๋ํฉ๋๋ค.
๋ค์ ์ ๋ณด๋ฅผ ๊ณต์ ํ ์ ์์ต๋๊น?
์ ์ด๋ ๋ ๊ฐ์ ์ฒซ ๋ฒ์งธ ์กฐ๊ฐ์ด ํ์ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ฌธ์ ๋ฅผ ์ฌํํ ์ ์์ต๋๋ค.
๊ฐ์ฌ ํด์
์ฌ๊ธฐ์ ๋ด 2์ผํธ๋ฅผ ์ถ๊ฐํ๋ฉด ๋ฉ๋๋ค. DT๊ฐ ๋ก๋ ๋ฐธ๋ฐ์(Traefik) ๋ค์์ ์๋ํ๋๋ก ํ๊ธฐ ์ํด ์ต๊ทผ์ Docker swarm์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ๊ฐ๋จํ repo DT-load-balancer ๋ฅผ ์ธ๋ถ ์ค์ ์ผ๋ก ๋ง๋ค์์ต๋๋ค... ์ฝ๊ฐ์ ๋ ธ๋ ฅ์ผ๋ก ์ฌํ ๊ฐ๋ฅํ ๊ฒ์ผ๋ก ๋ฐ๊ฟ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด ๋ฌธ์ ์ ๋ํ ShinyProxy์ ์...
@giordyb traefik ๋ฐ ๋ก๋ ๋ฐธ๋ฐ์ฑ์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค. ๋๋ ์ฌ์ ํ traefik 1.7(1.7.26)์ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ ์ฌ์ ํ ๋์ ์ ๊ตฌ์ฑ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๋ฌธ์ํ๋ ๋๋ก "traefik.backend.loadbalancer.stickiness" ๋ ์ด๋ธ์ ์ฌ์ฉํ์ง๋ง ์ฑ๊ณตํ์ง ๋ชปํ์ต๋๋ค. ๋ ์ด์ ์ฌ์ฉ๋์ง ์๋ ๋ ์ด๋ธ "traefik.backend.loadbalancer.sticky=true"๋ฅผ ์ฌ์ฉํ๋ฉด ์๋ํฉ๋๋ค. ์ด ๋ฌธ์ ์ ๋ํ ๋จ์์ธ์ง๋ ๋ชจ๋ฅด๊ฒ ์ง๋ง ๋๊ฐ ์๊ฒ ์ต๋๊น.
@billy34 ๊ฐ์ฌํฉ๋๋ค. ์ ๋ traefik 2.2๋ฅผ ์คํ ์ค์ ๋๋ค. ๊ณ ์ ์ธ์ ์ ํ์ฑํํ๋ ค๊ณ ์๋ํ์ง๋ง ์๋ฌด๋ฐ ์ฐจ์ด๊ฐ ์์์ต๋๋ค. ๋ด ์ฝ๋์ traefik ๊ตฌ์ฑ์ ๊ณง ๊ฒ์ํ๊ฒ ์ต๋๋ค.
@LEDfan kubernetes(๋ค์ค ๋
ธ๋ ํด๋ฌ์คํฐ)์์ traefik์ ์คํ ์ค์ด๋ฏ๋ก docker-compose๋ก ํ๊ฒฝ์ ๋ณต์ ํ๋ ๊ฒ์ด ์ฝ๊ฐ ๊น๋ค๋กญ์ต๋๋ค.
docker(mac์ฉ docker) ์๋์ ๋จ์ผ kubernetes ๋
ธ๋๋ก ๋ ์์ ํ๊ฒฝ์ ๋ง๋ค ์ ์์์ง๋ง ์ฌ์ ํ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
๋ค์์ ์ฑ์ ์ฝ๋์
๋๋ค(์ํ์ผ ๋ฟ ์ค๋ฅ๋ ๋ฐ์ํจ).
_ํธ์ง: ์ฝ๋์ ๋ํ ๋ค์ ๊ฒ์๋ฌผ์ ์ฐธ์กฐํ์ธ์_
๋๋ ์ด traefik ๊ตฌ์ฑ์ผ๋ก Shinyproxy 2.3.0์์ ์ด ์ฑ ๋ฒ์ ์ ํ ์คํธํ์ผ๋ฉฐ ์๋ํฉ๋๋ค. 2.4.1์์ ๋์ผํ ์์ ์ ์๋ํ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
๋ด๊ฐ ์๋ํ ๋ ๋ค๋ฅธ ๊ฒ์ Shinyproxy ์ปจํ ์ด๋๋ก ์ง์ ํฌํธ ํฌ์๋ฉํ์ฌ traefik์ ์ฐํํ๋ ๊ฒ์ ๋๋ค. ์ด๋ ๊ฒ ํด๋ ์ค๋ฅ๊ฐ ํ์๋๋ฏ๋ก traefik ๋ฌธ์ ์ธ์ง ์ ๋ง ์์ฌ์ค๋ฝ์ต๋๋ค.
@LEDfan
๋ช ๊ฐ์ง ๋ ํ ์คํธ๋ฅผ ํด๋ณด๋ traefik๊ณผ ์๋ฌด ๊ด๋ จ์ด ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋ด ํ๊ฒฝ์ ๋ณต์ ํ๋ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ๋ง๋ค์์ต๋๋ค(https://github.com/giordyb/test_shinyproxy.git).
kubernetes๋ฅผ ์คํํ๋ Mac์ฉ ๋์ปค์์ ๋์ผํ ๋ฐ์ง์ด๋ R ์ปจํ
์ด๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์ ๊ณตํ๋ ๋ฐ์ง์ด๋ ํ๋ก์(2.3.1 ๋ฐ 2.4.1) ๋ฐฐํฌ๋ฅผ 2๊ฐ ๋ง๋ค์์ต๋๋ค.
๊ด๋ จ๋ traefik์ด ์์ผ๋ฉฐ ๋ฐ์ง์ด๋ ํ๋ก์ ํฌ๋๋ kube-proxy ํฌํธ ์ ๋ฌ์ ํตํด ์ก์ธ์ค๋ฉ๋๋ค.
2.3.1์์ ๋ฐ์ดํฐ ํ ์ด๋ธ์ ๋ํ ์์ฒญ์ด ์๋ํฉ๋๋ค.
2.4.1์์ ๋์ผํ ์์ฒญ์ด ์คํจํ์ต๋๋ค.
๋๋ ์ด๊ฒ์ Shinyproxy ์ปจํ
์ด๋์ ๋ก๊ทธ์์ ์ป์ต๋๋ค.
2020-10-26 15:17:46.359 ERROR 1 --- [ XNIO-1 I/O-2] io.undertow.proxy : UT005028: Proxy request to /proxy_endpoint/884afa30-73a0-444f-b04f-3ae85b6de6bd/session/aacc55466aefc00eabd04b31f9891242/dataobj/tab_Cov_Linea_O failed โ
โ io.undertow.server.TruncatedResponseException: null โ
โ at io.undertow.client.http.HttpRequestConduit.truncateWrites(HttpRequestConduit.java:711) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] โ
โ at io.undertow.conduits.AbstractFixedLengthStreamSinkConduit.terminateWrites(AbstractFixedLengthStreamSinkConduit.java:256) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] โ
โ at org.xnio.conduits.ConduitStreamSinkChannel.shutdownWrites(ConduitStreamSinkChannel.java:178) ~[xnio-api-3.8.0.Final.jar!/:3.8.0.Final] โ
โ at io.undertow.channels.DetachableStreamSinkChannel.shutdownWrites(DetachableStreamSinkChannel.java:79) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] โ
โ at io.undertow.server.handlers.proxy.ProxyHandler$HTTPTrailerChannelListener.handleEvent(ProxyHandler.java:754) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] โ
โ at io.undertow.server.handlers.proxy.ProxyHandler$ProxyAction$1.completed(ProxyHandler.java:646) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] โ
โ at io.undertow.server.handlers.proxy.ProxyHandler$ProxyAction$1.completed(ProxyHandler.java:561) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] โ
โ at io.undertow.client.http.HttpClientExchange.invokeReadReadyCallback(HttpClientExchange.java:212) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] โ
โ at io.undertow.client.http.HttpClientConnection.initiateRequest(HttpClientConnection.java:414) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] โ
โ at io.undertow.client.http.HttpClientConnection.sendRequest(HttpClientConnection.java:347) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] โ
โ at io.undertow.server.handlers.proxy.ProxyHandler$ProxyAction.run(ProxyHandler.java:561) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] โ
โ at io.undertow.util.SameThreadExecutor.execute(SameThreadExecutor.java:35) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] โ
โ at io.undertow.server.HttpServerExchange.dispatch(HttpServerExchange.java:821) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] โ
โ at io.undertow.server.handlers.proxy.ProxyHandler$ProxyClientHandler.completed(ProxyHandler.java:316) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] โ
โ at io.undertow.server.handlers.proxy.ProxyHandler$ProxyClientHandler.completed(ProxyHandler.java:290) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] โ
โ at io.undertow.server.handlers.proxy.ProxyConnectionPool.connectionReady(ProxyConnectionPool.java:353) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] โ
โ at io.undertow.server.handlers.proxy.ProxyConnectionPool.connect(ProxyConnectionPool.java:548) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] โ
โ at io.undertow.server.handlers.proxy.LoadBalancingProxyClient.getConnection(LoadBalancingProxyClient.java:316) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] โ
โ at eu.openanalytics.containerproxy.util.ProxyMappingManager$1.getConnection(ProxyMappingManager.java:88) ~[containerproxy-0.8.5.jar!/:0.8.5] โ
โ at io.undertow.server.handlers.proxy.ProxyHandler$ProxyClientHandler.run(ProxyHandler.java:310) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] โ
โ at org.xnio.nio.WorkerThread.safeRun(WorkerThread.java:612) ~[xnio-nio-3.8.0.Final.jar!/:3.8.0.Final] โ
โ at org.xnio.nio.WorkerThread.run(WorkerThread.java:479) ~[xnio-nio-3.8.0.Final.jar!/:3.8.0.Final] โ
โ 2020-10-26 15:17:46.361 DEBUG 1 --- [ XNIO-1 I/O-2] io.undertow.request.error-response : Setting error code 503 for exchange HttpServerExchange{ POST /proxy_endpoint/884afa30-73a0-444f-b04f-3ae85b6de6bd/session/aacc55466aefc00eabd04b31f9891242 โ
โ java.lang.RuntimeException: null โ
โ at io.undertow.server.HttpServerExchange.setStatusCode(HttpServerExchange.java:1416) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] โ
โ at io.undertow.server.handlers.proxy.ProxyHandler.handleFailure(ProxyHandler.java:668) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] โ
โ at io.undertow.server.handlers.proxy.ProxyHandler$HTTPTrailerChannelListener.handleEvent(ProxyHandler.java:769) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] โ
โ at io.undertow.server.handlers.proxy.ProxyHandler$ProxyAction$1.completed(ProxyHandler.java:646) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] โ
โ at io.undertow.server.handlers.proxy.ProxyHandler$ProxyAction$1.completed(ProxyHandler.java:561) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] โ
โ at io.undertow.client.http.HttpClientExchange.invokeReadReadyCallback(HttpClientExchange.java:212) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] โ
โ at io.undertow.client.http.HttpClientConnection.initiateRequest(HttpClientConnection.java:414) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] โ
โ at io.undertow.client.http.HttpClientConnection.sendRequest(HttpClientConnection.java:347) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] โ
โ at io.undertow.server.handlers.proxy.ProxyHandler$ProxyAction.run(ProxyHandler.java:561) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] โ
โ at io.undertow.util.SameThreadExecutor.execute(SameThreadExecutor.java:35) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] โ
โ at io.undertow.server.HttpServerExchange.dispatch(HttpServerExchange.java:821) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] โ
โ at io.undertow.server.handlers.proxy.ProxyHandler$ProxyClientHandler.completed(ProxyHandler.java:316) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] โ
โ at io.undertow.server.handlers.proxy.ProxyHandler$ProxyClientHandler.completed(ProxyHandler.java:290) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] โ
โ at io.undertow.server.handlers.proxy.ProxyConnectionPool.connectionReady(ProxyConnectionPool.java:353) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] โ
โ at io.undertow.server.handlers.proxy.ProxyConnectionPool.connect(ProxyConnectionPool.java:548) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] โ
โ at io.undertow.server.handlers.proxy.LoadBalancingProxyClient.getConnection(LoadBalancingProxyClient.java:316) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] โ
โ at eu.openanalytics.containerproxy.util.ProxyMappingManager$1.getConnection(ProxyMappingManager.java:88) ~[containerproxy-0.8.5.jar!/:0.8.5] โ
โ at io.undertow.server.handlers.proxy.ProxyHandler$ProxyClientHandler.run(ProxyHandler.java:310) ~[undertow-core-2.1.4.Final.jar!/:2.1.4.Final] โ
โ at org.xnio.nio.WorkerThread.safeRun(WorkerThread.java:612) ~[xnio-nio-3.8.0.Final.jar!/:3.8.0.Final] โ
โ at org.xnio.nio.WorkerThread.run(WorkerThread.java:479) ~[xnio-nio-3.8.0.Final.jar!/:3.8.0.Final]
๋ฌธ์ ๋ฅผ ์ถ๊ฐ๋ก ํด๊ฒฐํ๊ธฐ ์ํด ๋ด๊ฐ ํ ์ ์๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
์๋ ํ์ธ์ @giordyb
์์ ๋ฐฐํฌ ๋ฐ ๋ณด๊ณ ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ์ค๋ ๋ฌธ์ ๋ฅผ ์ดํด๋ณด๋ ์๋นํ ์ด์ํ ๋ฌธ์ ์
๋๋ค.
๋๋ฒ๊ทธ ๋ก๊น
์ด ํ์ฑํ๋์ด ์๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค. ShinyProxy๋ฅผ ํตํด ๋ณด๋ด๋ ์์ฒญ์ ์ผ๋ถ๋ฅผ ๊ธฐ๋กํ๋ DispatcherServlet
ํด๋์ค๊ฐ ํ๋ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ฌํ ์์ฒญ์ ์ผ๋ถ๋ ํ ๋ฒ๋ง ์ฝ์ ์ ์๊ธฐ ๋๋ฌธ์ ์ผ๋ถ ํ๋ก์ ์์ฒญ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค. ๋ฐ๋ผ์ Shiny ์ฑ์ ์๋ชป๋ ์์ฒญ์ ๋ฐ์์ต๋๋ค.
ํด๊ฒฐ์ฑ
์ ๋ค์๊ณผ ๊ฐ์ด org.springframework.web.servlet.DispatcherServlet
ํด๋์ค์ ๋ํ ๋๋ฒ๊ทธ ๋ก๊น
์ ๋นํ์ฑํํ๋ ๊ฒ์
๋๋ค.
logging:
level:
root: DEBUG
org:
springframework:
web:
servlet:
DispatcherServlet: INFO
์ด๊ฒ์ ๋ค์ ShinyProxy ๋ฆด๋ฆฌ์ค์์ ๊ธฐ๋ณธ๊ฐ์ด ๋๋ฏ๋ก ์ด ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ ์ด์ ํ์ํ์ง ์์ต๋๋ค.
์๋ ํ์ธ์ @LEDfan์ ๋๋ค .
์ด๋ ๊ฒ ๋นจ๋ฆฌ ์กฐ์ฌํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ๋๋ ๋น์ ์ด ์ ์ํ๋๋ก ๋ก๊น ๊ตฌ์ฑ์ ์ถ๊ฐํ๊ณ ์ด์ ๋ชจ๋ ๊ฒ์ด ์์๋๋ก ์๋ํ๋ฏ๋ก ํ๋ณตํ ์บ ํ์นด์ ๋๋ค.
๋น์ ์ ๋์์ ์ฃผ์ ์ ๋๋จํ ๊ฐ์ฌํฉ๋๋ค!
NGINX ๋ฐ Azure Active Directory ๋ค์ ์๋ kubernetes์ ๋์ผํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๋ฐ์ดํฐ ํ ์ด๋ธ์ 2.3.1์์๋ ์ฌ๋ฐ๋ฅด๊ฒ ํ์๋์ง๋ง 2.4.1์์๋ ํ์๋์ง ์์ต๋๋ค. JDK8 ๋ฐ JDK11๋ก ๋น๋๋ฅผ ์๋ํ์ต๋๋ค.
application.yml
์์ ๋ชจ๋ ๋ก๊น
๊ตฌ์ฑ์ ์ ๊ฑฐํ๊ณ '๊ณ ์ ' ์ธ์
์ ์คํํ๋๋ก NGINX๋ฅผ ์ค์ ํ์ง๋ง ์ง๊ธ๊น์ง๋ ์ด์ด ์์ต๋๋ค.
์ปค๋ฎค๋ํฐ ์ง์ ํ์ด์ง์ application.yml
๋ฐ shinyproxy ํฌ๋ ๋ก๊ทธ์ ๋จ์ํ๋ ๋ฒ์ ์ ๊ฒ์ํ์ต๋๋ค. https://support.openanalytics.eu/t/datatables-ajax-error-with-shinyproxy-v-2-4-1/1763 .
์๋ ํ์ธ์ @smlehman๋ , ์ถ๊ฐ ์ ๋ณด ๊ฐ์ฌํฉ๋๋ค.
DataTables๋ฅผ ์ฌ์ฉํ๋ ์์ Shiny ์ฑ(Dockerfile ๋ฐ R ์์ค)์ ์ ๊ณตํด ์ฃผ์๊ฒ ์ต๋๊น?
ํ๋์ ์ฑ์ด ์์ง๋ง Kubernetes ์ค์ (nginx๋ ์ฌ์ฉ)์๋ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๊ฐ์ฌ ํด์!
์๋
ํ์ธ์ @LEDfan
ํ์คํ ๊ฒ. ์ ์ฒด ๊ทธ๋ฆผ์ ์ ๊ณตํ๊ธฐ ์ํด ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ๋ ๋ชจ๋ ๊ธฐ๋ณธ ํ์ผ๋ก ์์ ์ ์ฅ์๋ฅผ ๋ง๋ค์์ต๋๋ค. ๋ํ ์ค์ ์ ๋ํ ์ถ๊ฐ ์ปจํ
์คํธ๋ฅผ ์ ๊ณตํ ์ ์์ผ๋ฏ๋ก ์์ฉ ํ๋ก๊ทธ๋จ ์ฌ์ฉ์ ๊ด์ฌ์ด ์๋ ์ฌ๋๋ค์ ์ง์ํ๊ธฐ ์ํด ์์
์ค์ธ README๋ ํฌํจํ์ต๋๋ค.
https://github.com/smlehman/shinyproxy-debugDT
๋ฌธ์ ํด๊ฒฐ์ ๋์์ด ๋ ๋ค๋ฅธ ๊ฒ์ด ์์ผ๋ฉด ์๋ ค์ฃผ์ธ์.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๊ฐ์ฌ ํด์! ์ฐ๋ฆฌ๋ ์ด๊ฒ์ ์ฌํํ ์ ์๊ณ ์์ ์ค์ ๋๋ค.