我使用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
我一无所获。
我设置环境变量的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
在我看来,解释我的逻辑可能会有所帮助。因为我的想法可能是问题,如果它不在代码中:
可发送项目构建(通过repo push或手动)。在shippable.yml中它做了一些事情:
我想现在我已经在我的图像中设置了一个环境变量,我现在可以访问它了。但我一无所获。这有什么问题?
答案 0 :(得分:1)
感谢@Alex Hall与我合作!
事实证明,在此设置中使用Docker传递环境变量必须使用一个简单的标志来启动。所以在我的shippable.yml中我改变了:
- docker build -t myusername/myimagename:latest .
到
- docker build --build-arg SECRET_KEY=$SECRET_KEY -t myusername/myimagename:latest .
然后在我的Dockerfile中我添加了:
ARG SECRET_KEY
RUN echo $SECRET_KEY > env_file
看,钥匙在env_file