已成功部署运行,请参考我的这个docker compose文件, 为每个用户创建一个容器,但是公用数据库和grafana
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:
#!/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
其它请参看官方: