我想知道在docker build
期间是否有关于如何将凭据注入Docker容器的最佳实践。
在我的Dockerfile中,我需要获取需要基本身份验证的资源Web服务器,并且我正在思考如何在不对其进行硬编码的情况下将凭据放入容器的正确方法。
.netrc文件如何与curl --netrc ...
一起使用?但安全呢?我不喜欢将凭据与我的Dockerfile一起保存在源存储库中。
是否有任何方法可以使用参数或环境变量注入凭据?
有什么想法吗?
答案 0 :(得分:3)
一些新的Docker功能使其比过去更加优雅和安全。新的diagnostics让我们用一个Dockerfile
实现构建器模式。此方法将我们的凭据放入临时“构建器”容器中,然后该容器构建一个不包含任何秘密的新容器。
您可以选择如何将凭据获取到构建器容器中。例如:
ENV creds=user:pass
和curl https://$creds@host.com
COPY key /root/.ssh/id_rsa
Credential Helpers Dockerfile
:
## Builder
FROM alpine:latest as builder
#
# -- insert credentials here using a method above --
#
RUN apk add --no-cache git
RUN git clone https://github.com/some/website.git /html
## Webserver without credentials
FROM nginx:stable
COPY --from=builder /html /usr/share/nginx/html