CodeBuild Docker缓存在每个复制命令上都无效
我试图在CodeBuild上的实例之间共享docker缓存,以节省每次构建时运行pip安装、npm安装等的时间。为了做到这一点,我一直在提取项目最近构建的docker映像,并在docker-compose.yml的cache_from字段中指定它。在最初的几个步骤中,它成功地命中缓存,但在通过Pipfile和Pipfile.lock进行复制期间/之后,每次都无法命中缓存。即使我每隔几秒钟运行它,当它们很明显没有改变时。最糟糕的是,使用docker 20+在本地运行时,它会根据需要完美地缓存它们!我不确定这是否只是docker 19(这是AFAICT提供的最新代码构建)的一个bug,或者是否有其他一些我不知道的逻辑 Dockerfile大致如下所示:CodeBuild Docker缓存在每个复制命令上都无效,docker,caching,docker-compose,aws-codebuild,Docker,Caching,Docker Compose,Aws Codebuild,我试图在CodeBuild上的实例之间共享docker缓存,以节省每次构建时运行pip安装、npm安装等的时间。为了做到这一点,我一直在提取项目最近构建的docker映像,并在docker-compose.yml的cache_from字段中指定它。在最初的几个步骤中,它成功地命中缓存,但在通过Pipfile和Pipfile.lock进行复制期间/之后,每次都无法命中缓存。即使我每隔几秒钟运行它,当它们很明显没有改变时。最糟糕的是,使用docker 20+在本地运行时,它会根据需要完美地缓存它们!
FROM ...amazonaws.com/python:3.7.8-alpine3.12
# Create app directory
ENV WORKDIR="/usr/src/app"
RUN mkdir -p $WORKDIR
WORKDIR $WORKDIR
RUN wget -O /usr/local/bin/sops https://github.com/mozilla/sops/releases/download/3.0.5/sops-3.0.5.linux \
&& chmod 755 /usr/local/bin/sops
COPY Pipfile Pipfile.lock ./
etc.
docker-compose.yml包含以下内容:
services:
api:
container_name: api
build:
context: server
cache_from:
- ...amazonaws.com/python:3.7.8-alpine3.12
- ...amazonaws.com/flask:stage
ports:
- "5000:5000"
depends_on:
- "postgres"
- "redis"
environment:
- FLASK_ENV=development
- RX_CONFIG=dev.DockerConfig
- NEW_RELIC_CONFIG_FILE=
etc.
然后在CodeBuild中,如前所述,它成功地将缓存用于1-5,然后停止:
Step 1/21 : FROM ...amazonaws.com/python:3.7.8-alpine3.12
---> 32a1b98d0495
Step 2/21 : ENV WORKDIR="/usr/src/app"
---> Using cache
---> c9313da68d7c
Step 3/21 : RUN mkdir -p $WORKDIR
---> Using cache
---> 9d82f20584d0
Step 4/21 : WORKDIR $WORKDIR
---> Using cache
---> f5720978c0ef
Step 5/21 : RUN wget -O /usr/local/bin/sops https://github.com/mozilla/sops/releases/download/3.0.5/sops-3.0.5.linux && chmod 755 /usr/local/bin/sops
---> Using cache
---> c4ce543ac06e
Step 6/21 : COPY Pipfile Pipfile.lock ./
---> 18f4bc975732
Step 7/21 : RUN ...
...etc
任何帮助都将不胜感激,我快发疯了!或者任何可能的解决办法,不管怎样