如何在Windows 10上通过Docker容器配置dbt并显示在Docker Desktop控制台
在Windows 10上通过Docker运行dbt容器并显示在Docker Desktop控制台
Docker Desktop控制台里显示的是已创建(运行中或已停止)的容器,你目前只有dbt镜像,需要从镜像创建并运行容器才会出现在控制台里。以下是两种常用方法:
方法1:用docker run命令快速创建运行
步骤1:初始化dbt项目(可选,若已有项目可跳过)
先在本地创建一个dbt项目目录(比如C:\dbt\my_dbt_project),然后通过容器初始化项目:
docker run --rm -v C:\dbt\my_dbt_project:/usr/app ghcr.io/dbt-labs/dbt-postgres init my_dbt_project
--rm:容器执行完命令后自动删除-v:把本地目录挂载到容器内的工作目录/usr/app- 替换镜像名:如果用dbt-snowflake/bigquery,把
ghcr.io/dbt-labs/dbt-postgres换成对应镜像名即可
步骤2:启动交互式dbt容器
运行以下命令创建并进入dbt容器,这样容器会保持运行状态,同时你可以在终端执行dbt命令:
docker run -it -v C:\dbt\my_dbt_project:/usr/app --name my_dbt_container ghcr.io/dbt-labs/dbt-postgres bash
-it:开启交互式终端--name:给容器设置一个自定义名称,方便在Docker Desktop里识别
运行后,你就能在Docker Desktop的「容器」标签页看到这个正在运行的容器了。
如果只是临时执行dbt命令(比如dbt run),可以用:
docker run --rm -v C:\dbt\my_dbt_project:/usr/app ghcr.io/dbt-labs/dbt-postgres dbt run
执行完命令容器会自动停止,但仍会出现在Docker Desktop的已停止容器列表中。
方法2:用Docker Compose管理(适配现有多容器环境)
如果你已经在用Docker Compose管理nodeJS、Kafka等容器,可以把dbt服务加入到你的docker-compose.yml中,方便统一管理:
version: '3.8' services: # 你的现有服务示例(比如postgres) postgres: image: postgres:latest environment: POSTGRES_USER: dbt_user POSTGRES_PASSWORD: dbt_pass POSTGRES_DB: dbt_db ports: - "5432:5432" # 添加dbt服务 dbt: image: ghcr.io/dbt-labs/dbt-postgres:1.2.1 volumes: # 挂载本地dbt项目目录 - C:\dbt\my_dbt_project:/usr/app # 挂载dbt配置文件目录(若有自定义profiles.yml) - C:\dbt\.dbt:/root/.dbt depends_on: - postgres # 保持容器运行的命令,方便后续进入容器执行dbt操作 command: tail -f /dev/null
在docker-compose.yml所在目录执行以下命令启动服务:
docker-compose up -d
启动后,dbt容器会和你的其他容器一起出现在Docker Desktop的控制台中,还能自动和依赖的服务(比如postgres)互联互通。
注意事项
- 镜像版本:确保使用你已拉取的镜像tag(比如你本地的
1.2.1或1.2.latest) - 路径配置:Windows本地路径要写绝对路径,避免挂载失败
- 配置文件:dbt的
profiles.yml需要放在本地挂载的目录中,才能让容器读取到数据源配置
内容的提问来源于stack exchange,提问作者iuri
相关产品推荐
相关产品推荐

