准备Docker映像时有选择地忽略文件

时间:2019-03-05 18:06:48

标签: python docker

我的Dockerfile的一部分如下:

COPY dependencies/mylib-0.5-py3-none-any.whl mylib-0.5-py3-none-any.whl
RUN pip install mylib-0.5-py3-none-any.whl && rm mylib-0.5-py3-none-any.whl

COPY . /app

我不希望docker镜像中的轮子...

但是COPY .会复制它...

除非我指定不希望将其复制到.dockerignore ...

但是第一个COPY命令将不起作用。

有没有办法摆脱Catch-22?

1 个答案:

答案 0 :(得分:1)

我认为您可能只想在最后COPY之后删除文件?

COPY dependencies/mylib-0.5-py3-none-any.whl mylib-0.5-py3-none-any.whl
RUN pip install mylib-0.5-py3-none-any.whl && rm mylib-0.5-py3-none-any.whl
COPY . /app

RUN rm /app/dependencies/mylib-0.5-py3-none-any.whl

使用rm /app/dependencies/mylib-0.5-py3-none-any.whl,因为它将相对于其在源目录中的位置进行复制。

还有,我想您可以将其缩短为以下内容:

COPY . /app
WORKDIR /app
RUN pip install dependencies/mylib-0.5-py3-none-any.whl \
  && rm dependencies/mylib-0.5-py3-none-any.whl

您可能已经设置了WORKDIR,否则您将不得不稍微更改install和rm命令。