Fixes: - Temperature field: temperature_c (wrong) -> temperature_celsius (correct) - Geomap panel: added explicit location config with lat/lon field mapping - Added PM2.5 timeseries panel - Dashboard UID: geomap-test-v1
53 lines
1.5 KiB
Docker
53 lines
1.5 KiB
Docker
# BEMServer - Building Energy Management Server
|
|
# Multi-component Dockerfile: core + api + ui + celery
|
|
# Based on Python 3.11 slim with TimescaleDB support
|
|
|
|
FROM python:3.11-slim AS base
|
|
|
|
# System dependencies
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
gcc \
|
|
libpq-dev \
|
|
libffi-dev \
|
|
curl \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
WORKDIR /opt/bemserver
|
|
|
|
# ---- Stage 1: Install bemserver-core ----
|
|
FROM base AS core
|
|
COPY bemserver/bemserver-core /tmp/bemserver-core
|
|
RUN pip install --no-cache-dir /tmp/bemserver-core
|
|
|
|
# ---- Stage 2: Install bemserver-api ----
|
|
FROM core AS api
|
|
COPY bemserver/bemserver-api /tmp/bemserver-api
|
|
RUN pip install --no-cache-dir /tmp/bemserver-api
|
|
|
|
# ---- Stage 3: Install bemserver-ui ----
|
|
FROM api AS ui
|
|
COPY bemserver/bemserver-ui /tmp/bemserver-ui
|
|
RUN pip install --no-cache-dir /tmp/bemserver-ui
|
|
|
|
# ---- Final stage ----
|
|
FROM ui AS final
|
|
|
|
# Create non-root user
|
|
RUN groupadd -r bemserver && useradd -r -g bemserver -d /opt/bemserver -s /sbin/nologin bemserver
|
|
|
|
# Create config directory
|
|
RUN mkdir -p /opt/bemserver/config /opt/bemserver/data \
|
|
&& chown -R bemserver:bemserver /opt/bemserver
|
|
|
|
# Copy entrypoint script
|
|
COPY bemserver/entrypoint.sh /opt/bemserver/entrypoint.sh
|
|
RUN chmod +x /opt/bemserver/entrypoint.sh
|
|
|
|
# Healthcheck
|
|
HEALTHCHECK --interval=30s --timeout=10s --retries=5 --start_period=60s \
|
|
CMD curl -f http://localhost:5000/healthz || exit 1
|
|
|
|
USER bemserver
|
|
|
|
ENTRYPOINT ["/opt/bemserver/entrypoint.sh"]
|