1
我使用Shippable有兩個原因:自動化我的Docker鏡像的構建並傳遞加密的環境變量。我能夠自動化構建,但我無法傳遞變量。將可環境變量從Docker傳遞到Docker
我開始在項目設置中進入環境變量設置爲可發送文本框:
SECRET_KEY=123456
我點擊「加密」按鈕,然後可交付的回報:
- secure : hash123abc...
我把這個哈希到我的shippable.yml文件中。它看起來像:
language: python
python:
- 2.7
build_image: myusername/myimagename
env:
- secure : hash123abc...
build:
post_ci:
- docker login -u myusername -p mypassword
- docker build -t myusername/myimagename:latest .
- docker push myusername/myimagename:latest
integrations:
hub:
- integrationName : myintegrationname
type: docker
branches:
only:
- master
自動構建工程!但如果我嘗試:
sudo docker run myusername/myimagename:latest echo $SECRET_KEY
我什麼也沒得到。
我Dockerfile其設置環境變量(在這種情況下SECRET_KEY)看起來是這樣的:
FROM python:2.7.11
RUN apt-get update
RUN apt-get install -y git
RUN get clone https://github.com/myusername/myrepo.git
ENV SECRET_KEY=$SECRET_KEY
這可能有助於解釋我的邏輯,我看到它。因爲如果它不在代碼中,我的想法可能成爲問題:
可裝運的項目構建觸發(通過回購推動或手動)。在shippable.yml它做一些事情:
- 建立初始圖像
- 設置SECRET_KEY環境變量
- 建立了基於該Dockerfile
- 的Dockerfile的新形象: - 套env變量SECRET_KEY到SECRET_KEY由早先的兩個步驟設置的.yml
- 推動圖像
我在想,現在我已經在圖像中設置了一個環境變量,現在我可以訪問它了。但我什麼也沒得到。這裏有什麼問題?
運行命令'env'來查看所有的環境變量。這可以幫助您調試問題。 –
是的,謝謝。我剛剛嘗試過。它至少顯示變量,但它是空的SECRET_KEY = –
您是否在碼頭集裝箱內運行它?我的意思是'.yml',比如'post_ci'。事實上,在所有階段都要做,看看是否有區別。如果語法錯誤,請看看是否有一個名爲'secure'的變量。 –