# 在国内docker部署安装多用户teslamate

**URL:** https://forum.magentochina.org/t/%E5%9C%A8%E5%9B%BD%E5%86%85docker%E9%83%A8%E7%BD%B2%E5%AE%89%E8%A3%85%E5%A4%9A%E7%94%A8%E6%88%B7teslamate/1031
**Category:** Uncategorized
**Tags:** docker, tesla
**Created:** [2025 年6 月 25 日 14:03 UTC](https://forum.magentochina.org/t/%E5%9C%A8%E5%9B%BD%E5%86%85docker%E9%83%A8%E7%BD%B2%E5%AE%89%E8%A3%85%E5%A4%9A%E7%94%A8%E6%88%B7teslamate/1031 "2025-06-25T14:03:49Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### 作者： ![cainiao](https://forum.magentochina.org/user_avatar/forum.magentochina.org/cainiao/32/179_2.png) [@cainiao](https://forum.magentochina.org/u/cainiao)
#### 发布日期： [2025 年6 月 25 日 14:03 UTC](https://forum.magentochina.org/t/%E5%9C%A8%E5%9B%BD%E5%86%85docker%E9%83%A8%E7%BD%B2%E5%AE%89%E8%A3%85%E5%A4%9A%E7%94%A8%E6%88%B7teslamate/1031/1 "2025-06-25T14:03:49Z")

</div>

已成功部署运行，请参考我的这个docker compose文件, 为每个用户创建一个容器，但是公用数据库和grafana

```yaml
services:
  teslamate_shuai:
    image: docker.1ms.run/teslamate/teslamate:latest
    user: root
    restart: always
    environment:
      - ENCRYPTION_KEY=your_random_key_1
      - DATABASE_USER=postgres
      - DATABASE_PASS=supersecret
      - DATABASE_NAME=teslamate_shuai
      - DATABASE_HOST=database
      - MQTT_HOST=mosquitto
    ports:
      - 127.0.0.1:4000:4000
    depends_on:
      - database
      - mosquitto
    volumes:
      - ./data/import_shuai:/opt/app/import

  teslamate_daxing:
    image: docker.1ms.run/teslamate/teslamate:latest
    user: root
    restart: always
    environment:
      - ENCRYPTION_KEY=your_random_key_2
      - DATABASE_USER=postgres
      - DATABASE_PASS=supersecret
      - DATABASE_NAME=teslamate_daxing
      - DATABASE_HOST=database
      - MQTT_HOST=mosquitto
    ports:
      - 127.0.0.1:4001:4000
    depends_on:
      - database
      - mosquitto
    volumes:
      - ./data/import_daxing:/opt/app/import

  database:
    image: docker.1ms.run/library/postgres:17
    restart: always
    environment:
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=supersecret
    volumes:
      - ./data/pgdata:/var/lib/postgresql/data
      - ./init-db.sh:/docker-entrypoint-initdb.d/init-db.sh:ro

  mosquitto:
    image: docker.1ms.run/library/eclipse-mosquitto:2
    restart: always
    command: mosquitto -c /mosquitto-no-auth.conf
    volumes:
      - ./data/mosquitto/config:/mosquitto/config
      - ./data/mosquitto/data:/mosquitto/data

  grafana:
    image: docker.1ms.run/teslamate/grafana:latest
    restart: always
    environment:
      - GF_SECURITY_ADMIN_USER=admin
      - GF_SECURITY_ADMIN_PASSWORD=admin
    ports:
      - 127.0.0.1:3000:3000
    volumes:
      - ./data/grafana:/var/lib/grafana
    depends_on:
      - database

```

## init-db.sh:

```sh
#!/bin/bash
set -e

# 判断并创建数据库 teslamate_shuai
if ! psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" -tAc "SELECT 1 FROM pg_database WHERE datname='teslamate_shuai'" | grep -q 1; then
  psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" <<-EOSQL
    CREATE DATABASE teslamate_shuai OWNER postgres;
EOSQL
fi

# 判断并创建数据库 teslamate_daxing
if ! psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" -tAc "SELECT 1 FROM pg_database WHERE datname='teslamate_daxing'" | grep -q 1; then
  psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" <<-EOSQL
    CREATE DATABASE teslamate_daxing OWNER postgres;
EOSQL
fi

# 安装扩展
for DB in teslamate_shuai teslamate_daxing; do
  psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$DB" <<-EOSQL
    CREATE EXTENSION IF NOT EXISTS cube WITH SCHEMA public;
    CREATE EXTENSION IF NOT EXISTS earthdistance WITH SCHEMA public;
EOSQL
done

```

其它请参看官方：

> **[Docker install | TeslaMate](https://docs.teslamate.org/docs/installation/docker/)**
>
> This document provides the necessary steps for installation of TeslaMate on any system that runs Docker. You run NixOS? We got you covered, see NixOS install.
