如何在github-action内部缓存docker-compose构建

时间:2020-04-28 23:08:22

标签: github docker-compose github-actions docker-build building-github-actions

有什么办法可以缓存docker-compose,使其不会一次又一次地构建? 这是我的动作工作流程文件:

name: Github Action
on:
  push:
    branches:
      - staging
jobs:
  test:
    runs-on: ubuntu-18.04

    steps:
      - uses: actions/checkout@v1

      - name: Bootstrap app on Ubuntu
        uses: actions/setup-node@v1
        with:
          node-version: '12'


      - name: Install global packages
        run: npm install -g yarn prisma


      - name: Install project deps
        if: steps.cache-yarn.outputs.cache-hit != 'true'
        run: yarn


      - name: Build docker-compose
        run: docker-compose -f docker-compose.test.prisma.yml up --build -d

我想缓存docker build步骤。我曾尝试使用if: steps.cache-docker.outputs.cache-hit != 'true' then only build,但没有用。

2 个答案:

答案 0 :(得分:5)

您所指的是“ docker层缓存”,而GitHub Actions还不支持它。

在多个地方对此进行了广泛讨论,例如:

如评论中所述,有一些第三方行为提供了此功能(例如this one),但是对于这样的核心和基本功能,我将谨慎对待GitHub上未正式支持的任何内容本身。

答案 1 :(得分:3)

对于那些通过 Google 到达这里的人,现在“支持”了。或者至少它正在工作:https://github.community/t/use-docker-layer-caching-with-docker-compose-build-not-just-docker/156049。 这个想法是使用 docker(及其缓存)构建图像,然后使用 docker compose 来运行(启动)它们。