2017-08-11 128 views
0

我们的Dockerfile调用一个python脚本,它将S3中的二进制文件复制到/ usr/bin。这是第一次正常工作。但从此“docker-compose build”什么都不做,因为所有内容都被缓存了。如果二进制文件已经改变,这是一个问题。docker-compose从S3存储桶更新

使用--no-cache构建的缺点是,确保“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。

+0

发布您的Dockerfile –

+0

@TarunLalwani在上面添加了dockerfile。 – Philip

回答

1

因此截至目前没有像这样的直接功能。但是解决方案有一个解决方法。您的下载步骤之前

添加构建参数

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

在构建以下

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

图像使用这将始终确保你得到的ARG一步的变化,所有步骤缓存后这将被无效

一个功能已经被要求,正在制定在线程

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