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

修复docker-compose报错:teslamate服务不支持database配置项

问题根因

报错完全是YAML缩进错误导致的。你把database、grafana、mosquitto三个服务,错写到了teslamate服务的配置缩进层级里,Docker Compose直接把这三个字段识别成teslamate服务下的非法配置项,才会抛出Unsupported config option for services.teslamate: 'database'的错误。

YAML对缩进要求非常严格,同级配置必须保持缩进一致,子配置要比父配置多缩进固定数量的空格(全文件统一用2个或4个都可以)。你写的database、grafana、mosquitto三个服务名,缩进深度和teslamate下的cap_drop、volumes这类子属性完全一样,自然会被判定为teslamate的子配置,而不是和它平级的独立服务。

修正后的完整配置

直接替换原有docker-compose.yml内容即可,注意对齐细节:

version: "3"

services:
  teslamate:
    image: teslamate/teslamate
    restart: always
    environment:
      - ENCRYPTION_KEY=<Insert Key>
      - DB_USER=teslamate
      - DB_PASS=<Insert password>
      - DB_NAME=teslamate
      - DB_HOST=database
      - MQTT_HOST=mosquitto
      - VIRTUAL_HOST=<Insert IP address>
        # 如果需要从其他机器访问UI,把值替换为docker宿主机的主机名/IP地址
      - TZ=Asia/Shanghai # 可选,替换为本地标准时区后debug日志会使用本地时间
    ports:
      - 4000:4000
    volumes:
      - ./import:/opt/app/import
    cap_drop:
      - all

  database:
    image: postgres:14
    restart: always
    environment:
      - POSTGRES_USER=teslamate
      - POSTGRES_PASSWORD=<Insert password>
      - POSTGRES_DB=teslamate
    volumes:
      - teslamate-db:/var/lib/postgresql/data

  grafana:
    image: teslamate/grafana
    restart: always
    environment:
      - DATABASE_USER=teslamate
      - DATABASE_PASS=goforit
      - DATABASE_NAME=teslamate
      - DATABASE_HOST=database
    ports:
      - 3000:3000
    volumes:
      - teslamate-grafana-data:/var/lib/grafana

  mosquitto:
    image: eclipse-mosquitto:2
    restart: always
    command: mosquitto -c /mosquitto-no-auth.conf
    # ports:
    #   - 1883:1883
    volumes:
      - mosquitto-conf:/mosquitto/config
      - mosquitto-data:/mosquitto/data

volumes:
  teslamate-db:
  teslamate-grafana-data:
  mosquitto-conf:
  mosquitto-data:
额外要注意的配置坑
  • 环境变量等号后面不要加多余空格,你原来写的ENCRYPTION_KEY= <Insert Key>、DB_PASS= <Insert password>、DATABASE_PASS= goforit这类写法,等号后的空格会被算成变量值的一部分,后续会出现数据库连接失败、鉴权不通过的问题,直接把等号和值连起来写就行。
  • TZ时区不要填US这种模糊值,必须填标准时区格式,比如国内使用填Asia/Shanghai,美国东部填America/New_York,不然时区配置不会生效。
  • 后续加新服务的时候,服务名要和teslamate、database这些现有服务保持完全一致的缩进深度,不要多缩进。

改完直接重新执行docker-compose up -d就能正常启动服务。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 20:30:53