【问题标题】:How do you cache Yarn Dependencies for a Docker image build in CircleCI?如何在 CircleCI 中缓存 Docker 映像构建的 Yarn 依赖项?
【发布时间】:2018-10-05 22:20:13
【问题描述】:

我的yarn installs 现在需要大约 5 分钟。我正在想办法减少它们。

现在在我的 Dockerfile 中有以下内容:

COPY package.json yarn.lock node_modules /usr/src/app/
COPY ${YARN_CACHE} /root/.cache/yarn/
WORKDIR /usr/src/app

# We are doing this so that we can make use of layer caching 
# (i.e. most likely yarn deps won't change as often as the app code)
COPY . /usr/src/app

# yarn install
RUN yarn install

在我的圈子文件中,我有

  - restore_cache:
     keys:
       # only restores cache if the yarn file is the same
       - yarn-packages-v4-{{ checksum "yarn.lock" }}
  - run: docker pull "xxx.dkr.ecr.us-east-1.amazonaws.com/website:latest"
  - run: docker build --build-arg NODE_ENV=production --build-arg YARN_CACHE=$(yarn cache dir) --force-rm -t xxx.dkr.ecr.us-east-1.amazonaws.com/website:build-${CIRCLE_BUILD_NUM} .

但是我的 yarn install 仍然需要 5 分钟。我是不是做错了什么?

【问题讨论】:

    标签: docker yarnpkg circleci


    【解决方案1】:

    问题是yarn cache dir 的结果是一个外部文件夹,它在 docker 构建中不存在或者只是空的。你有几个选择

    【讨论】:

      【解决方案2】:

      根据 Tom 的第一点,在同一 Docker 构建阶段将其放在 RUN yarn install 之前的任何位置可以通过将所有纱线缓存缓存到卷目录来提供帮助。

      ENV YARN_CACHE_FOLDER=/usr/local/yarn-cache
      VOLUME /usr/local/yarn-cache
      

      【讨论】:

        猜你喜欢
        • 2023-03-14
        • 2021-03-26
        • 1970-01-01
        • 2019-06-17
        • 2019-05-10
        • 2017-09-12
        • 1970-01-01
        • 1970-01-01
        • 2015-09-09
        相关资源
        最近更新 更多