μλ νμΈμ,
LDAP μΈμ¦μ μ¬μ©νλ μλνλ Shinyproxy μ±μ΄ μμ΅λλ€. κ·Έλ¬λ SQL λ°μ΄ν°λ² μ΄μ€μμ λ°μ΄ν°λ₯Ό κ²μνκΈ° μν΄ μ¬κΈ°μμ μΈκΈν μ격 μ¦λͺ μ μ¬μ©νμ¬ R μ½λμμ νλμ½λ©λ μ°κ²° λ¬Έμμ΄μ μ¬μ©ν©λλ€(κΆμ₯νμ§ μμ)(μ΅μ’ μ¬μ©μμκ² λ°μ΄ν°λ² μ΄μ€λ₯Ό 쿼리ν κΆνμ΄ μκΈ° λλ¬Έμ μλΉμ€ μ¬μ©μλ₯Ό μ¬μ©ν©λλ€).
con <- DBI::dbConnect(odbc::odbc(), encoding = "latin1", .connection_string = 'Driver={Driver};Server=Server;Database=dbb;UID=UID;PWD=PWD')
μ΄ μ°κ²° λ¬Έμμ΄μ Linux νΈμ€νΈμμ 컨ν μ΄λλ‘ μ λ¬νλ νκ²½ λ³μλ‘ λ°κΎΈλ €κ³ νμ΅λλ€. μ΄μ R μ½λκ° λ€μκ³Ό κ°μ΄ λ³κ²½λμμ΅λλ€.
connString <- Sys.getenv("CONNSTRING")
connString <- sub("\\\\","\\", connString)
con <- DBI::dbConnect(odbc::odbc(), encoding = "latin1", .connection_string = connString)
μ΄κ²μ ShinyProxy μΈλΆμμ 컨ν μ΄λλ₯Ό μ€νν λ μ μλνλ―λ‘ λ°νμμ λ€μ docker λͺ λ Ήμ μ¬μ©νμ¬ νκ²½ λ³μλ₯Ό μ λ¬ν©λλ€.
docker run -it --env-file .env.list app123
νκ²½ λ³μλ μ€ν μ€μΈ 컨ν μ΄λμ λ€μ΄κ° 'env'λ₯Ό μ λ ₯ν λλ λ°κ²¬λ©λλ€.
κ·Έλ¬λ ShinyProxyλ₯Ό μ¬μ©ν λ λ°νμ μ yaml κ΅¬μ± νμΌκ³Ό bash-commandμμ μ΄λ₯Ό ꡬμ±νλ λ°©λ²μ΄ λͺ ννμ§ μμ΅λλ€. μ± μ»¨ν μ΄λμ λν container-env-file 맀κ°λ³μλ₯Ό μ΄λ»κ² μ μν©λκΉ? κ·Έλ¦¬κ³ μ°κ²°λ 컨ν μ΄λμμ μ νλλλ‘ λ°νμμ --env-file .env.list λ¬Έμ μ΄λ»κ² μ λ¬ν©λκΉ?
λ΄ μμ© νλ‘κ·Έλ¨ yamlμ μ΄μ λ€μκ³Ό κ°μ΅λλ€(λλ μλμ μΌλ‘ ldap ꡬμ±μ λΉμ λμμ΅λλ€).
proxy:
port: 8080
authentication: ldap
admin-groups: admins
ldap:
url: url
manager-dn: manager-dn
manager-password: manager-password
user-search-base: user-search-base
user-search-filter: user-search-filter
group-search-filter: group-search-filter
group-search-base: group-search-base
docker:
internal-networking: true
specs:
- id: 01_ok
display-name: dashboard
description: Dashboard
container-cmd: ["R", "-e", "shiny::runApp('/root/R')"]
container-image: hberten/app123
container-env-file: .env.list
container-network: shineyproxyn-net
access-groups: [GG_APP_ShinyProxy]
logging:
file:
shinyproxy.log
κ·Έλ° λ€μ λ€μ λͺ λ Ήμ μ€ννμ¬ ShinyProxy 컨ν μ΄λλ₯Ό μμν©λλ€.
sudo docker run -d --env-file ~/.env.list -v /var/run/docker.sock:/var/run/docker.sock --net shineyproxyn-net -p 8080:8080 hberten/shinyproxy
κ΄λ ¨ λ¬Έμ λ here μμ μ°Ύμ μ μμ§λ§ μ΄ λ¬Έμ λ Docker compose.ymlμ μ¬μ©ν©λλ€. Docker Compose μμ΄ κ΅¬μ±ν μ μμ΅λκΉ? λ΄κ° 무μμ λμΉκ³ μμ΅λκΉ?
λμμ μ£Όμλ©΄ κ°μ¬νκ² μ΅λλ€!
μλ
νμΈμ @Bertusian ,
λ¬Έμ λ 컨ν
μ΄λμμ Shinyproxy μ체λ₯Ό μ€ννκ³ μλ€λ κ²μ΄λ―λ‘ ν΄λΉ 컨ν
μ΄λ λ΄μμ .env.list
νμΌμ μ¬μ©ν μ μλλ‘ νκ±°λ(λ³Όλ₯¨ λ§μ΄νΈνμ¬) λλ envμ ν¨κ» container-env
λ₯Ό μ¬μ©ν΄μΌ ν©λλ€. docker run λͺ
λ Ήμμ νμΌμ ν΅ν΄ μ λ¬νλ vars. λν container-env-file
λ μ λ κ²½λ‘λ₯Ό κΈ°λνλ€κ³ μκ°ν©λλ€.
μλ νμΈμ @ mnazarovμ λλ€.
μ€μ λ‘, λλ 컨ν
μ΄λμμ shinyproxyλ₯Ό μ€ννκ³ μμ΅λλ€. κ²°κ΅ (.env.list λ³Όλ₯¨μ΄ νμ¬λ) Shinyproxy 컨ν
μ΄λλ₯Ό μμνκΈ° μν λ°νμ λͺ
λ Ήμ μλ₯Ό μ 곡ν μ μμ΅λκΉ? κ·Έλ¬λ©΄ R-app 컨ν
μ΄λμ μΊ‘μ²λ©λκΉ? .env.listλ --env-file ~/.env.list(shinyproxy μμ΄ μ»¨ν
μ΄λλ₯Ό μ€νν λ μλ)λ₯Ό μΆκ°νμ¬ μ¬μ©ν μ μλ€κ³ μκ°νμ΅λλ€.
κ·Έλ¦¬κ³ μ¬μ ν application.ymlμ μ μ©ν΄μΌ ν©λκΉ? μ¬μ ν λμκ² λͺ
ννμ§ μμ΅λλ€. μ΄λ€ λμμ΄λ μλ₯Ό λ€μ΄ μ£Όμ
μ κ°μ¬ν©λλ€ ...
λλ λ λͺ
ννκ² μ€λͺ
νλ €κ³ λ
Έλ ₯ν κ²μ
λλ€. νΈμ€νΈ μμ€ν
κ³Ό 2κ°μ 컨ν
μ΄λκ° μμ΅λλ€. νλλ Shinyproxyκ° μ€νλλ μΈλΆ 컨ν
μ΄λμ΄κ³ λ€λ₯Έ νλλ μ±μ΄ μλ λ΄λΆ 컨ν
μ΄λμ
λλ€.
νΈμ€νΈ μμ€ν
μμ docker run --env-file ...
λ₯Ό μ€ννλ©΄ νΈμ€νΈ μμ€ν
μ ν΄λΉ νμΌμμ νκ²½ λ³μλ₯Ό μΈλΆ 컨ν
μ΄λμμ env varsλ‘ μ¬μ©ν μ μμ΅λλ€. μ΄μ container-env
λ³μλ₯Ό μ¬μ©νμ¬ λ΄λΆ 컨ν
μ΄λμ μΆκ°λ‘ μ λ¬ν μ μμ΅λλ€.
λλ νμΌμ΄ μλ νΈμ€νΈ ν΄λλ₯Ό μΈλΆ 컨ν
μ΄λμ λ§μ΄νΈν λ€μ container-env-file
λ³μλ₯Ό μ¬μ©νμ¬ ν΄λΉ νμΌμ env λ³μλ₯Ό λ΄λΆ 컨ν
μ΄λμμ μ¬μ©ν μ μλλ‘ ν μ μμ΅λλ€.
λ λ²μ§Έ λμμ λν μμ λͺ λ Ήμ λ€μκ³Ό κ°μ μ μμ΅λλ€.
sudo docker run -d -v /home/envs:/tmp/envs -v /var/run/docker.sock:/var/run/docker.sock --net shineyproxyn-net -p 8080:8080 hberten/shinyproxy
.env.list νμΌμ΄ νΈμ€νΈμ /home/envs/μ μλ€κ³ κ°μ - λ³Όλ₯¨ λ§μ΄νΈλ₯Ό μ¬μ©νμ¬ /tmp/envs/env.list μλμ μΈλΆ 컨ν
μ΄λμμ μ¬μ©ν μ μλλ‘ ν©λλ€. μ΄μ container-env-file: /tmp/envs/.env.list
μ¬μ©ν μ μμ΅λλ€. κ·νμ application.ymlμμ
첫 λ²μ§Έ λμμ μλ μλ λͺ
λ Ήμ μ¬μ©ν λ€μ application.yamlμμ container-env
λ₯Ό λ€μκ³Ό κ°μ΄ μ¬μ©νλ κ²μ
λλ€.
container-env:
VAR11: "${VAR1}"
VAR22: "${VAR2}"
μ¬κΈ°μ VAR1 λ° VAR2λ νΈμ€νΈμ νμΌμ μ μλ env varsμ΄λ―λ‘ μΈλΆ 컨ν μ΄λμμ env varsλ‘ μ¬μ©ν μ μμΌλ©° μ¬κΈ°μμ VAR11 λ° VAR22λ‘ λ΄λΆ 컨ν μ΄λμ μ λ¬ν©λλ€(μ: λ¬Όλ‘ λμΌν μ΄λ¦μ μ¬μ©ν μλ μμ΅λλ€. )
μ΄λ¨Έλ. μ΄κ²μ νλ₯ν©λλ€! μ΄μ μλν©λλ€. λλ 첫 λ²μ§Έ μ μμ μλνμ§ μμμ§λ§ (λμ€μ ν κ²μ λλ€), λ λ²μ§Έ μ루μ μ λ°λ‘ ν΄λμ΅λλ€! λλ λ΄κ° κ°κΉμ΄ μλ€λ κ²μ μκ³ μμμ§λ§ μ°Ύμ μ μμμ΅λλ€.
λ§€μ° κ°μ¬ν©λλ€!!
ShinyProxyλ‘ μ¬λ¬λΆμ΄ νκ³ μλ λ©μ§ μΌλ€.
ν¨κ³Όκ° μμ΄μ λ€νμ λλ€!
κ°μ₯ μ μ©ν λκΈ
λλ λ λͺ ννκ² μ€λͺ νλ €κ³ λ Έλ ₯ν κ²μ λλ€. νΈμ€νΈ μμ€ν κ³Ό 2κ°μ 컨ν μ΄λκ° μμ΅λλ€. νλλ Shinyproxyκ° μ€νλλ μΈλΆ 컨ν μ΄λμ΄κ³ λ€λ₯Έ νλλ μ±μ΄ μλ λ΄λΆ 컨ν μ΄λμ λλ€.
νΈμ€νΈ μμ€ν μμ
docker run --env-file ...
λ₯Ό μ€ννλ©΄ νΈμ€νΈ μμ€ν μ ν΄λΉ νμΌμμ νκ²½ λ³μλ₯Ό μΈλΆ 컨ν μ΄λμμ env varsλ‘ μ¬μ©ν μ μμ΅λλ€. μ΄μ container-env
λ³μλ₯Ό μ¬μ©νμ¬ λ΄λΆ 컨ν μ΄λμ μΆκ°λ‘ μ λ¬ν μ μμ΅λλ€.λλ νμΌμ΄ μλ νΈμ€νΈ ν΄λλ₯Ό μΈλΆ 컨ν μ΄λμ λ§μ΄νΈν λ€μ
container-env-file
λ³μλ₯Ό μ¬μ©νμ¬ ν΄λΉ νμΌμ env λ³μλ₯Ό λ΄λΆ 컨ν μ΄λμμ μ¬μ©ν μ μλλ‘ ν μ μμ΅λλ€.λ λ²μ§Έ λμμ λν μμ λͺ λ Ήμ λ€μκ³Ό κ°μ μ μμ΅λλ€.
.env.list νμΌμ΄ νΈμ€νΈμ /home/envs/μ μλ€κ³ κ°μ - λ³Όλ₯¨ λ§μ΄νΈλ₯Ό μ¬μ©νμ¬ /tmp/envs/env.list μλμ μΈλΆ 컨ν μ΄λμμ μ¬μ©ν μ μλλ‘ ν©λλ€. μ΄μ
container-env-file: /tmp/envs/.env.list
μ¬μ©ν μ μμ΅λλ€. κ·νμ application.ymlμμ첫 λ²μ§Έ λμμ μλ μλ λͺ λ Ήμ μ¬μ©ν λ€μ application.yamlμμ
container-env
λ₯Ό λ€μκ³Ό κ°μ΄ μ¬μ©νλ κ²μ λλ€.μ¬κΈ°μ VAR1 λ° VAR2λ νΈμ€νΈμ νμΌμ μ μλ env varsμ΄λ―λ‘ μΈλΆ 컨ν μ΄λμμ env varsλ‘ μ¬μ©ν μ μμΌλ©° μ¬κΈ°μμ VAR11 λ° VAR22λ‘ λ΄λΆ 컨ν μ΄λμ μ λ¬ν©λλ€(μ: λ¬Όλ‘ λμΌν μ΄λ¦μ μ¬μ©ν μλ μμ΅λλ€. )