将 PIP_EXTRA_INDEX_URL 传递给 docker build

Tho*_*aud 3 python pip docker

我正在构建一个依赖于私有 Pypi 服务器的应用程序。

我的 Dockerfile 看起来像这样:

FROM python:3.6

WORKDIR /src/mylib

COPY . ./

RUN pip install .
Run Code Online (Sandbox Code Playgroud)

我希望 pip 使用额外的服务器来安装依赖项。所以我试图PIP_EXTRA_INDEX_URL在构建阶段传递环境变量,如下所示:

"docker build --pull -t $IMAGE_TAG --build-arg PIP_EXTRA_INDEX_URL=$PIP_EXTRA_INDEX_URL ." 
Run Code Online (Sandbox Code Playgroud)

由于某种原因,它没有按预期工作,并且RUN echo $PIP_EXTRA_INDEX_URL什么都不返回。

怎么了?

Ale*_*tes 7

您应该添加ARG到您的Dockerfile. 您的 Dockerfile 应如下所示:

 FROM python:3.6

 ARG PIP_EXTRA_INDEX_URL 
 # YOU CAN ALSO SET A DEFAULT VALUE: 
 # ARG PIP_EXTRA_INDEX_URL=DEFAULT_VALUE

 RUN echo "PIP_EXTRA_INDEX_URL = $PIP_EXTRA_INDEX_URL"
 # you could also use braces - ${PIP_EXTRA_INDEX_URL}

 WORKDIR /src/mylib     
 COPY . ./     
 RUN pip install .
Run Code Online (Sandbox Code Playgroud)

如果你想了解更多,看看这篇文章

  • @freedev你是对的!我不知道 Dockerfile ARG 在构建时作为环境变量公开。我认为它们只能在 Dockerfile 中使用(例如在 RUN 指令中)。但这完全有道理 - 谢谢! (2认同)