在Dockerfile中存储用于Jenkins的API Token

我需要从Jenkins中检索一个工件来设置一个Docker-Image。

我的Jenkins需要一个可以通过wget通过的身份validation

wget --auth-no-challenge --http-user=user --http-password=apiToken --secure-protocol=TLSv1 http://jenkins.yourcompany.com/job/your_job/build?token=TOKEN 

如这里所见

现在我需要将API标记传递给我的Dockerfile。

至于Dockerfile是公共可访问的,我不想将api-token明文存储在文件中。 另一种select是Docker ARG,但他们不推荐将其用于密码或安全相关数据,因为它可以用“docker history”

复制和删除包含密码的文件似乎对我来说并不那么优雅。

有没有其他解决scheme?

在做docker build之前下载这个artefact,然后在你的Dockerfile COPY artefact /somewhere使用COPY artefact /somewhere

既然你担心这个大小的影响,你可以使用--squash在构build过程中压缩图层。

https://docs.docker.com/engine/reference/commandline/image_build/

如果你想玩多阶段构build(实验),你也可以使用:

 FROM base_image AS prepare COPY artefact /something RUN chown user /something FROM base_image COPY --from=prepare /something /something 

https://docs.docker.com/engine/userguide/eng-image/multistage-build/