docker-compose从S3桶更新

我们的Dockerfile调用一个Python脚本,它将S3中的二进制文件复制到/ usr / bin。 这工作正常,第一次。 但是从那时起,“docker构build”没有任何意义,因为所有东西都被caching了。 如果二进制文件已经改变,这是一个问题。

使用–no-cache构build的缺点是,确保“docker-compose build”的最佳方法是,如果有的话,总是会选取新的二进制文件。 我们不介意是否不必要地下载二进制文件即使不变,只要它工作,然后二进制文件已经改变。

好像我们想要一个始终执行的Dockerfile步骤?

FROM ubuntu:trusty RUN apt-get update RUN apt-get -y install software-properties-common RUN apt-get -y install --reinstall ca-certificates RUN add-apt-repository ppa:fkrull/deadsnakes RUN apt-get update && apt-get install -y \ curl \ wget \ vim \ git \ python3.5 \ python3-pip \ python3-setuptools \ libpcap0.8-dev RUN ln -sf /usr/bin/python3.5 /usr/bin/python3 ADD . /app WORKDIR /app # Install Python Requirements RUN pip3 install -r etc/python/requirements.txt # Download/Install processor and associated libs RUN python3 setup_processor.py RUN mkdir -p /logs ENTRYPOINT ["/app/entrypoint.sh"] 

其中setup_processor.py直接从S3下载到/ usr / bin。

所以截至目前还没有这样的直接特征。 但是,解决scheme有一个解决方法。

在下载步骤之前添加Build参数

 ARG BUILD_ON=now # Download/Install processor and associated libs RUN python3 setup_processor.py 

下面是build立图像的使用

 docker build --build-arg BUILD_ON=$(date) .... 

这将始终确保您在ARG步骤中进行更改,并且之后的所有步骤caching都将失效

一个function已经被请求,并正在下面的线程

https://github.com/moby/moby/issues/1996