You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Docker环境下dbt Docs已提示服务启动但无法通过浏览器访问的问题求助

解决Docker环境下dbt docs serve无法访问的问题

我明白你遇到的困扰——dbt的debugrundocs generate都能正常跑,唯独docs serve启动后浏览器死活打不开。既然已经去掉了network_mode: host,那问题大概率出在端口映射没配置上,毕竟默认情况下Docker容器的端口不会自动暴露给宿主机。

具体修复步骤:

  1. 更新docker-compose.yaml配置
    删掉network_mode: host后,必须手动添加端口映射规则,把容器内部的8080端口映射到宿主机的对应端口。修改后的配置如下:

    version: '3'
    services:
      <projectName>:
        build:
          context: .
          target: dbt-bigquery
        image: dbt/bigquery
        volumes:
          - .:/usr/app
          - ~/.dbt/:/root/.dbt/
          - <path to gg cred key>
        # 新增端口映射:宿主机8080 ↔ 容器8080
        ports:
          - "8080:8080"
    
  2. 重启Docker服务让配置生效
    执行以下命令重启容器:

    docker-compose down && docker-compose up -d
    
  3. 重新启动dbt docs serve
    再次运行dbt docs serve,之后在浏览器访问http://localhost:8080,应该就能正常打开dbt文档页面了。

额外排查点(如果上面的步骤没解决):

  • 端口冲突:如果宿主机的8080端口已经被其他程序占用,可以换个端口,比如把ports改成"8081:8080",然后访问http://localhost:8081
  • 防火墙拦截:检查宿主机的防火墙设置,确保8080(或你指定的自定义端口)没有被阻止对外访问。
  • 确认绑定地址:从你的日志看,dbt已经绑定到0.0.0.0:8080,这个是正确的配置(允许容器外部访问),所以不用修改dbt的启动参数。

附你的原始配置参考:

docker-compose.yaml(修改前)

version: '3'
services:
  <projectName>:
    build:
      context: .
      target: dbt-bigquery
    image: dbt/bigquery
    volumes:
      - .:/usr/app
      - ~/.dbt/:/root/.dbt/
      - <path to gg cred key>
    network_mode: host

profiles.yml

bq-dbt-workshop:
  outputs:
    dev:
      dataset: <bigquery-dataset>
      fixed_retries: 1
      keyfile: <path to gg cred key>
      location: asia-southeast1
      method: service-account
      priority: interactive
      project: <gcp-project-id>
      threads: 4
      timeout_seconds: 300
      type: bigquery
  target: dev

dbt docs serve日志

14:36:04 Running with dbt=1.0.8
14:36:04 Serving docs at 0.0.0.0:8080
14:36:04 To access from your browser, navigate to: http://localhost:8080
14:36:04
14:36:04
14:36:04 Press Ctrl+C to exit.

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

火山引擎 最新活动