gpt4 book ai didi

Dockerfile - 隐藏 --build-args 以防止在构建时间中显示

转载 作者:行者123 更新时间:2023-12-02 09:30:09 28 4
gpt4 key购买 nike

我有以下 Dockerfile:

FROM ubuntu:16.04

RUN apt-get update \
&& apt-get upgrade -y \
&& apt-get install -y \
git \
make \
python-pip \
python2.7 \
python2.7-dev \
ssh \
&& apt-get autoremove \
&& apt-get clean

ARG password
ARG username
ENV password $password
ENV username $username

RUN pip install git+http://$username:$password@org.bitbucket.com/scm/do/repo.git

我使用以下命令从此 Dockerfile 构建镜像:

docker build -t myimage:v1 --build-arg password="somepassoword" --build-arg username="someuser" .

但是,在构建日志中,我作为 --build-arg 传递的用户名和密码是可见的。

Step 8/8 : RUN pip install git+http://$username:$password@org.bitbucket.com/scm/do/repo.git
---> Running in 650d9423b549
Collecting git+http://someuser:somepassword@org.bitbucket.com/scm/do/repo.git

如何隐藏它们?或者是否有其他方式在 Dockerfile 中传递凭据?

最佳答案

更新

你知道,我关注的是你问题的错误部分。您根本不应该使用用户名和密码。。您应该使用access keys ,允许对私有(private)存储库进行只读访问。

创建 ssh key 并将公共(public)组件添加到存储库后,您可以将私钥放入您的镜像中:

RUN mkdir -m 700 -p /root/.ssh
COPY my_access_key /root/.ssh/id_rsa
RUN chmod 700 /root/.ssh/id_rsa

现在您可以在安装 Python 项目时使用该 key :

RUN pip install git+ssh://git@bitbucket.org/you/yourproject.repo
<小时/>

(原始答案如下)

您通常不会将凭证烘焙到这样的图像中。除了您已经发现的问题之外,它还会使您的镜像变得不太有用,因为每次您的凭据发生更改时,或者如果多个人希望能够使用它时,您都需要重建它。

凭证通常是在运行时通过各种机制之一提供的:

  • 环境变量:您可以将凭据放入文件中,例如:

    USERNAME=myname
    PASSWORD=secret

    然后将其包含在 docker run 中命令行:

    docker run --env-file myenvfile.env ...

    USERNAMEPASSWORD环境变量将可供容器中的进程使用。

  • 绑定(bind)挂载:您可以将凭据放入文件中,然后使用 -v 在容器内将该文件公开为绑定(bind)挂载。选项 docker run :

    docker run -v /path/to/myfile:/path/inside/container ...

    这会将文件公开为 /path/inside/container在容器内。

  • Docker secret :如果您在集群模式下运行 Docker,则可以将您的凭据公开为 docker secrets .

关于Dockerfile - 隐藏 --build-args 以防止在构建时间中显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54125505/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com