從例子我見過一個可以設置泊塢窗,compose.yml環境變量,像這樣:在泊塢窗創建運行bash的客戶端設置環境變量
services:
postgres:
image: my_node_app
ports: -8080:8080
environment:
APP_PASSWORD: mypassword
...
爲了安全起見,我用例需要我從我們有一個bash客戶端服務器獲取密碼:
#!/bin/bash
get_credential <server> <dev-environment> <role> <key>
在碼頭工人的文檔,我發現this,它說,我可以在shell環境變量的值傳遞給泊塢窗撰寫。所以我可以運行bash客戶端來獲取創建docker實例的啓動shell中的密碼。但是,這需要我在Docker外部和我的Maven項目中使用我的bash客戶端。
另一種方法是運行/ cmd/entrypoint一個bash腳本,它可以爲docker實例設置環境變量。由於我的搬運工像node.js的運行,目前我的Dockerfile是這樣的:
FROM node:4-slim
MAINTAINER myself
# ... do Dockerfile stuff
# TRIAL #1: run a bash script to set the environment varable --- UNSUCCESSFUL!
COPY set_en_var.sh/
RUN chmod +x /set_en_var.sh
RUN /bin/bash /set_en_var.sh
# original entry point
#ENTRYPOINT ["node", "mynodeapp.js", "configuration.js"]
# TRIAL #2: use a bash script as entrypoint that sets
# the environment variable and runs my node app . --- UNSUCCESSFUL TOO!
ENTRYPOINT ["/entrypoint.sh"]
這裏是entrypoint.sh
代碼:
. mybashclient.sh
cred_str=$(get_credential <server> <dev-environment> <role> <key>)
export APP_PASSWORD=($cred_str)
# run the original entrypoint command
node mynodeapp.js configuration.js
這裏是我的set_en_var.sh
代碼:
. mybashclient.sh
cred_str=$(get_credential <server> <dev-environment> <role> <key>
export APP_PASSWORD=($cred_str)
所以2問題:
- 哪一個更好的選擇,讓我的bash客戶端密碼住在碼頭或碼頭外?
- 如果我在Docker中使用它,我如何使用cmd/run/entrypoint來實現這個功能?
什麼'。 mybashclient.sh'呢? 「mybashclient.sh」的內容是什麼? –
也有端口:-8080:8080。我希望'-'是typo –
@TarunLalwani'。 mybashclient.sh'應該來源於腳本。該腳本包含一個名爲'get_credential'的函數。 – breezymri