feat(db): add deploiement stack

Signed-off-by: Klagarge <remi@heredero.ch>
This commit is contained in:
2026-05-03 21:59:41 +02:00
parent 50583bb79b
commit b8ddfefc2c
4 changed files with 61 additions and 1 deletions

View File

@@ -1,5 +1,11 @@
INFLUX_PORT=8181
UI_PORT=8093
INFLUX_DATABASE=provence
REST_PORT=8080
REST_USERNAME=
REST_PASSWORD=
MQTT_BROKER_URL=tls://mqtt.e.kb28.ch:8883
MQTT_USERNAME=
MQTT_PASSWORD=

26
db/Dockerfile Normal file
View File

@@ -0,0 +1,26 @@
FROM golang:1.25-alpine AS builder
WORKDIR /app
COPY ./src/go.mod ./src/go.sum ./
RUN go mod tidy
COPY ./src .
RUN CGO_ENABLED=0 go build -ldflags="-w -s" -o /gateway .
FROM alpine:latest AS certs
RUN apk --no-cache add ca-certificates
FROM scratch AS final
LABEL org.opencontainers.image.authors="remi.heredero@hevs.ch" \
org.opencontainers.image.title="PI-E2EEDA Gateway MQTT/Influx/REST" \
org.opencontainers.image.description="This container is an application for the E2EEDA PI. Use MQTT to communicate with devices, enabling real-time updates and control. Time-series data, such as device states, is stored in InfluxDB for analytics and monitoring. A REST API provides external access for managing devices and retrieving data." \
org.opencontainers.image.source="https://github.com/PI-E2EEDA/Plein-de-eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-project"
COPY --from=builder /gateway /gateway
COPY --from=certs /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
EXPOSE 8080
ENTRYPOINT ["/gateway"]

View File

@@ -74,6 +74,34 @@ services:
- RABBITMQ_DEFAULT_PASS=${MQTT_PASSWORD:?MQTT_PASSWORD is required}
command: sh -c "rabbitmq-plugins enable rabbitmq_mqtt && rabbitmq-server"
gateway:
build:
context: .
dockerfile: Dockerfile
depends_on:
influxdb:
condition: service_healthy
mqtt:
condition: service_started
environment:
- MQTT_BROKER_URL=${MQTT_BROKER_URL:-mqtt://mqtt:1883}
- MQTT_USERNAME=${MQTT_USERNAME:?MQTT_USERNAME is required}
- MQTT_PASSWORD=${MQTT_PASSWORD:?MQTT_PASSWORD is required}
- INFLUX_URL=${INFLUX_URL:-http://influxdb:${INFLUX_PORT:-8181}}
- INFLUX_DATABASE=${INFLUX_DATABASE}
- INFLUX_TOKEN_FILE=/run/secrets/admin-token
- REST_PORT=${REST_PORT:-8080}
- REST_USERNAME=${REST_USERNAME}
- REST_PASSWORD=${REST_PASSWORD}
- MAPPING_CONFIG_PATH=/config/mapping.json
secrets:
- admin-token
volumes:
- ./mapping.json:/config/mapping.json:ro
ports:
- "${REST_PORT:-8080}:8080"
restart: unless-stopped
volumes:
influxdb3_data:
rabbitmq_data:

View File

@@ -54,7 +54,7 @@ func mqttConnection() *mqtt.MqttGateway {
}
func influxConnection() *influx.InfluxGateway {
influxUrl := getEnv("INFLUX_URL", "https://db.e.kb28.ch:443")
influxUrl := getEnv("INFLUX_URL", "http://influxdb:8181")
influxDatabase := getEnv("INFLUX_DATABASE", "provence")
influxToken := getEnv("INFLUX_TOKEN", "")