docker compose 保持 git pull 最新代码

警告
本文最后更新于 2022-11-24,文中内容可能已过时。

由于 Dockerfile 使用了多层构建的方式,对于没有改动的命令行,就不会在执行重新构建了。如果我们需要在 Dockerfile 保持更新 git pull,可以有两种方式

  1. docker build 的时候使用 --no-cache 选项,但是这个是全局范围的配置,一旦设置,需要全部重新构建,往往显得十分臃肿
  2. docker-compose 还支持提供 --build-arg 的选项,可以把一些参数传递到 Dockerfile 里面。

这里有一个小技巧,如果我们每次构建的时候,传递的参数是一个与时间相关的,则在每次构建的时候都会传递不同的参数,从而保证了在该参数之后的构建是会保持更新与构建的。

1
2
3
4
5
6
7
8
## ensure latest wepy
ARG BUILD_DATE
RUN --mount=type=ssh \
    mkdir -p ~/git && cd ~/git && \
    git clone git@192.168.1.171:lfang/wepy.git && \
    cd ~/git/wepy && \
    bash ./install.venv.sh && \
    rm -rf ~/git/wepy
1
2
3
4
5
6
7
8
9
## ----------------------------------------------------------------------------
## build
export COMPOSE_DOCKER_CLI_BUILD=1
export DOCKER_BUILDKIT=1
DOCKER_BUILDKIT=1 docker build \
    --ssh default \
    --build-arg BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%S') \
    -t pydev:v1.0 .
## ----------------------------------------------------------------------------

相关内容

william 支付宝支付宝
william 微信微信
0%