You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GitHub Actions中使Dockerfile Plus扩展正常工作?

问题描述

我正在搭建一套流畅的环境构建流程,使用基于Docker的Lando作为环境构建系统,将Dockerfile提供给Lando,由它通过docker-compose构建集群。本地运行完全正常,也已经在GitHub Actions中成功搭建了与本地一致的测试环境。

但现在尝试用Dockerfile Plus扩展来扩展Dockerfile,我的Dockerfile内容如下:

# syntax = edrevo/dockerfile-plus

INCLUDE+ ./docker/prod/Dockerfile

COPY docker/dev/php.ini /usr/local/etc/php/conf.d/zzz-docker-custom.ini

# Other stuff here.

这个配置在本地运行良好,能正确引入docker/prod/Dockerfile的内容,但在GitHub Actions工作流中运行时,INCLUDE+行出现语法错误,说明扩展未加载。根据Dockerfile Plus文档,它依赖BuildKit,新版本Docker默认启用BuildKit,但GitHub环境似乎没启用。我已经按要求显式设置了环境变量,但问题依然存在。

需要说明的是,我无法直接修改docker build命令(该命令由Lando动态生成的docker-compose文件调用),且本地无需修改该命令就能正常运行,因此不清楚问题出在哪里。请问如何让Dockerfile Plus在GitHub Actions中正常工作?

解决方案

以下是几个可以尝试的解决步骤,确保GitHub Actions环境中正确启用BuildKit并让Lando加载Dockerfile Plus扩展:

  • 全局设置BuildKit环境变量
    在GitHub Actions工作流的全局环境中添加DOCKER_BUILDKIT=1和COMPOSE_DOCKER_CLI_BUILD=1,确保docker-compose调用docker build时启用BuildKit。示例工作流片段:

    name: Lando Build
    on: [push]
    env:
      DOCKER_BUILDKIT: 1
      COMPOSE_DOCKER_CLI_BUILD: 1
    jobs:
      build:
        runs-on: ubuntu-latest
        steps:
          - name: Checkout code
            uses: actions/checkout@v4
          # 后续运行Lando的步骤
    
  • 启用Docker Buildx
    GitHub Actions默认的Docker环境可能需要显式启用Buildx来支持BuildKit扩展。在工作流中添加setup-buildx-action步骤:

    - name: Set up Docker Buildx
      uses: docker/setup-buildx-action@v3
    

    这会确保Docker使用支持扩展的BuildKit构建器。

  • 修改Lando配置强制启用BuildKit
    在你的.lando.yml配置文件中,为对应的服务添加环境变量覆盖,确保Lando生成的docker-compose配置包含BuildKit相关设置:

    services:
      # 替换成你的服务名称,比如php、app等
      your-service:
        overrides:
          environment:
            - DOCKER_BUILDKIT=1
    
  • 验证Docker版本兼容性
    确保GitHub Actions中使用的Docker版本足够新(建议20.10+),可以在工作流中添加版本检查步骤:

    - name: Check Docker versions
      run: |
        docker --version
        docker buildx version
    

    如果版本过旧,使用setup-docker action指定新版本:

    - name: Set up Docker
      uses: docker/setup-docker-action@v3
      with:
        version: "25.0.0"
    
  • 在运行Lando前显式导出环境变量
    如果全局环境变量不生效,可以在运行Lando命令前直接导出变量:

    - name: Run Lando build
      run: |
        export DOCKER_BUILDKIT=1
        export COMPOSE_DOCKER_CLI_BUILD=1
        lando build
    

内容的提问来源于stack exchange,提问作者Crell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 14:30:40