目前我的python项目有一个deploy.sh文件,它运行一些apt-get,pip安装,创建一些dirs并复制一些文件....所以进程是git clone我的私有repo然后运行deploy.sh
现在我正在使用docker,基本的问题是,如果dockerfile运行一个git clone然后运行deploy.sh,或者dockerfile是否有自己的每个apt-get,pip等的RUN并忽略deploy .sh ...这似乎是重复工作(打字)并且有可能不同步?
答案 0 :(得分:1)
该工作应该在dockerfile中重复。这样做的原因是利用了docker的图层和缓存系统。举个例子:
# this will only execute the first time you build the image, all future builds will use a cached layer
RUN apt-get update && apt-get install somepackage -y
# this will only run pip if your requirements file changes
ADD requirements.txt /app/requirements.txt
RUN pip install -r requirements.txt
ADD . /app/
此外,您不应在docker build中执行git checkout
代码。只需将本地结帐中的文件添加到图片中,如上例所示。