This commit is contained in:
2025-11-06 13:46:19 +01:00
parent e76cb3dc21
commit b7efae61c4
6 changed files with 128 additions and 16 deletions

View File

@@ -12,11 +12,46 @@ The abstraction layer is an asyncio-based worker that manages device communicati
## Running ## Running
### Local Development
```bash ```bash
# Start the abstraction worker # Start the abstraction worker
poetry run python -m apps.abstraction.main poetry run python -m apps.abstraction.main
``` ```
### Docker Container
#### Build Image
```bash
docker build -t abstraction:dev -f apps/abstraction/Dockerfile .
```
#### Run Container
```bash
docker run --rm \
-v $(pwd)/config:/app/config:ro \
-e MQTT_BROKER=172.16.2.16 \
-e MQTT_PORT=1883 \
-e REDIS_HOST=172.23.1.116 \
-e REDIS_PORT=6379 \
-e REDIS_DB=8 \
abstraction:dev
```
#### Environment Variables
| Variable | Default | Description |
|----------|---------|-------------|
| `MQTT_BROKER` | `172.16.2.16` | MQTT broker hostname/IP |
| `MQTT_PORT` | `1883` | MQTT broker port |
| `REDIS_HOST` | `localhost` | Redis server hostname/IP |
| `REDIS_PORT` | `6379` | Redis server port |
| `REDIS_DB` | `0` | Redis database number |
### What the Worker Does
The worker will: The worker will:
1. Load configuration from `config/devices.yaml` 1. Load configuration from `config/devices.yaml`
2. Connect to MQTT broker (172.16.2.16:1883) 2. Connect to MQTT broker (172.16.2.16:1883)

View File

@@ -22,7 +22,6 @@ WORKDIR /app
# Install system dependencies # Install system dependencies
RUN apk add --no-cache \ RUN apk add --no-cache \
curl \
gcc \ gcc \
musl-dev \ musl-dev \
linux-headers linux-headers
@@ -42,10 +41,6 @@ RUN chown -R app:app /app
# Switch to non-root user # Switch to non-root user
USER app USER app
# Health check
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
CMD curl -f http://localhost:8001/health || exit 1
# Expose port # Expose port
EXPOSE 8001 EXPOSE 8001

View File

@@ -20,7 +20,7 @@ poetry run uvicorn apps.api.main:app --reload
### Production Mode ### Production Mode
```bash ```bash
poetry run uvicorn apps.api.main:app --host 0.0.0.0 --port 8000 poetry run uvicorn apps.api.main:app --host 0.0.0.0 --port 8001
``` ```
### Using Python directly ### Using Python directly
@@ -29,6 +29,39 @@ poetry run uvicorn apps.api.main:app --host 0.0.0.0 --port 8000
poetry run python -m apps.api.main poetry run python -m apps.api.main
``` ```
### Docker Container
#### Build Image
```bash
docker build -t api:dev -f apps/api/Dockerfile .
```
#### Run Container
```bash
docker run --rm -p 8001:8001 \
-v $(pwd)/config:/app/config:ro \
-e MQTT_BROKER=172.16.2.16 \
-e MQTT_PORT=1883 \
-e REDIS_HOST=172.23.1.116 \
-e REDIS_PORT=6379 \
-e REDIS_DB=8 \
-e REDIS_CHANNEL=ui:updates \
api:dev
```
#### Environment Variables
| Variable | Default | Description |
|----------|---------|-------------|
| `MQTT_BROKER` | `172.16.2.16` | MQTT broker hostname/IP |
| `MQTT_PORT` | `1883` | MQTT broker port |
| `REDIS_HOST` | `localhost` | Redis server hostname/IP |
| `REDIS_PORT` | `6379` | Redis server port |
| `REDIS_DB` | `0` | Redis database number |
| `REDIS_CHANNEL` | `ui:updates` | Redis pub/sub channel |
## API Endpoints ## API Endpoints
### `GET /health` ### `GET /health`

View File

@@ -19,7 +19,6 @@ WORKDIR /app
# Install system dependencies # Install system dependencies
RUN apk add --no-cache \ RUN apk add --no-cache \
curl \
gcc \ gcc \
musl-dev \ musl-dev \
linux-headers linux-headers
@@ -38,10 +37,6 @@ RUN chown -R app:app /app
# Switch to non-root user # Switch to non-root user
USER app USER app
# Health check
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
CMD curl -f http://localhost:8010/health || exit 1
# Expose port # Expose port
EXPOSE 8010 EXPOSE 8010

View File

@@ -28,22 +28,50 @@ Der Simulator ist bereits Teil des Projekts. Keine zusätzlichen Dependencies er
## Start ## Start
### Local Development
```bash ```bash
# Standard-Start (Port 8003) # Standard-Start (Port 8010)
poetry run uvicorn apps.simulator.main:app --host 0.0.0.0 --port 8003 poetry run uvicorn apps.simulator.main:app --host 0.0.0.0 --port 8010
# Mit Auto-Reload für Entwicklung # Mit Auto-Reload für Entwicklung
poetry run uvicorn apps.simulator.main:app --host 0.0.0.0 --port 8003 --reload poetry run uvicorn apps.simulator.main:app --host 0.0.0.0 --port 8010 --reload
# Im Hintergrund # Im Hintergrund
poetry run uvicorn apps.simulator.main:app --host 0.0.0.0 --port 8003 > /tmp/simulator.log 2>&1 & poetry run uvicorn apps.simulator.main:app --host 0.0.0.0 --port 8010 > /tmp/simulator.log 2>&1 &
``` ```
### Docker Container
#### Build Image
```bash
docker build -t simulator:dev -f apps/simulator/Dockerfile .
```
#### Run Container
```bash
docker run --rm -p 8010:8010 \
-e MQTT_BROKER=172.16.2.16 \
-e MQTT_PORT=1883 \
-e SIM_PORT=8010 \
simulator:dev
```
#### Environment Variables
| Variable | Default | Description |
|----------|---------|-------------|
| `MQTT_BROKER` | `172.16.2.16` | MQTT broker hostname/IP |
| `MQTT_PORT` | `1883` | MQTT broker port |
| `SIM_PORT` | `8010` | Port for web interface |
## Web-Interface ## Web-Interface
Öffne im Browser: Öffne im Browser:
``` ```
http://localhost:8003 http://localhost:8010
``` ```
### Features im Dashboard ### Features im Dashboard

View File

@@ -27,6 +27,32 @@ poetry run uvicorn apps.ui.main:app --reload --port 8002
poetry run python -m apps.ui.main poetry run python -m apps.ui.main
``` ```
### Docker Container
#### Build Image
```bash
docker build -t ui:dev -f apps/ui/Dockerfile .
```
#### Run Container
```bash
docker run --rm -p 8002:8002 \
-e UI_PORT=8002 \
-e API_BASE=http://localhost:8001 \
-e BASE_PATH=/ \
ui:dev
```
#### Environment Variables
| Variable | Default | Description |
|----------|---------|-------------|
| `UI_PORT` | `8002` | Port for UI server |
| `API_BASE` | `http://localhost:8001` | Base URL for API service |
| `BASE_PATH` | `/` | Base path for routing |
## Project Structure ## Project Structure
``` ```