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

Github Actions部署dbt项目Docker构建报错:找不到dbt_project.yml

问题描述

我在为dbt项目配置Github Actions时遇到了问题,以下是我的配置文件和报错信息:

Workflow YAML 文件

name: Build and Push Docker Image to Google Cloud Artifact Registry

on:
  push:
    branches:
      - feature_branch_1

jobs:
  build-and-push:
    runs-on: ubuntu-latest

    steps:
    - name: Check Out Repository
      uses: actions/checkout@v2
      
    - name: Set up Docker Buildx
      uses: docker/setup-buildx-action@v1

    - name: Login to Google Cloud Registry
      uses: docker/login-action@v1
      with:
        registry: europe-west3-docker.pkg.dev
        username: _json_key
        password: ${{ secrets.ARTIFACTORY_SECRET }}

    - name: Build and push Docker image
      run: |
          docker build -t gcr.io/project_name/image_name:$GITHUB_SHA .
          echo ${{ secrets.ARTIFACTORY_SECRET }} | docker login -u _json_key --password-stdin https://gcr.io
          docker push gcr.io/project_name/image_name:$GITHUB_SHA

Dockerfile 文件

FROM python:3.11-slim-buster

WORKDIR /home

COPY . /home

# Install dbt
RUN pip install --no-cache-dir dbt-bigquery

# Run dbt when the container launches
RUN dbt deps && dbt source snapshot-freshness

报错信息

流水线在“Build and push Docker Image”步骤的第5/5步(RUN dbt deps && dbt source snapshot-freshness)失败,报错:

Runtime Error
No dbt_project.yml found at expected path /home/dbt_project.yml

我对CI/CD不太熟悉,本地启动容器时会进入容器查看代码目录,但不知道在Github Actions里怎么操作。想问下哪里操作错了?YAML和Dockerfile有没有冲突?


问题原因与解决办法

核心问题

你的dbt项目代码实际存放在仓库的dbt子目录中,但Dockerfile里用了COPY . /home,把整个仓库根目录的内容复制到容器的/home目录下,导致dbt_project.yml并没有在容器的/home路径下,而是在/home/dbt目录里,所以dbt命令找不到配置文件。

解决步骤

修改Dockerfile中的复制命令,只把dbt子目录的内容复制到容器的工作目录/home下:

FROM python:3.11-slim-buster

WORKDIR /home

# 替换原来的 COPY . /home,只复制dbt子目录的内容到当前工作目录
COPY dbt .

# Install dbt
RUN pip install --no-cache-dir dbt-bigquery

# Run dbt when the container launches
RUN dbt deps && dbt source snapshot-freshness

额外说明

  1. 若要在Github Actions中查看容器内容,可以在构建步骤后添加临时调试步骤,启动容器并查看目录结构,示例如下:
- name: Debug container directory
  run: |
      docker build -t temp-image .
      docker run --rm temp-image ls -la /home

执行后可在Actions日志中看到容器内/home目录的内容,确认文件路径是否正确。

  1. Workflow YAML和Dockerfile本身没有冲突,问题仅出在Dockerfile的复制路径与你的项目目录结构不匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 16:52:40