我使用 Shippable 有两个原因:自动构建我的 docker 映像和传递加密的环境变量。我能够自动化构建,但我无法传递变量。
我首先在项目设置中的 Shippable 文本框中输入环境变量:
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
我什么都得不到。
我设置环境变量(在本例中为 SECRET_KEY)的 Dockerfile 如下所示:
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
在我看来,解释我的逻辑可能会有所帮助。因为如果它不在代码中,我的想法可能是问题:
可交付的项目构建被触发(通过 repo 推送或手动)。在 shippable.yml 中,它做了一些事情:
- 构建初始图像
- 设置 SECRET_KEY 环境变量
- 基于 Dockerfile 构建新镜像
- Dockerfile: -- 将环境变量 SECRET_KEY 设置为前两步 .yml 设置的 SECRET_KEY
- 推动图像
我在想,现在我已经在我的图像中设置了一个环境变量,我现在可以访问它了。但我什么也得不到。这里有什么问题?