Anpassung Pipeline und Dockerfile
This commit is contained in:
parent
adac95129d
commit
67b0e4ebd7
31
.gitea/workflows/docker.yml
Normal file
31
.gitea/workflows/docker.yml
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
name: Build Docker Image (Podman)
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ main ]
|
||||||
|
pull_request:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Install Podman
|
||||||
|
run: sudo apt-get update && sudo apt-get install -y podman
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
- name: Set version in Cargo.toml
|
||||||
|
run: |
|
||||||
|
VERSION=$(cat VERSION)
|
||||||
|
sed -i "s/^version = \"__VERSION__\"/version = \"$VERSION\"/" Cargo.toml
|
||||||
|
- name: Build image with Podman
|
||||||
|
run: |
|
||||||
|
VERSION=$(cat VERSION)
|
||||||
|
podman build -t paramod:latest -t git.skaville.rocks/eneuber/paramod:$VERSION .
|
||||||
|
- name: Login to Gitea Registry
|
||||||
|
run: echo ${{ secrets.REGISTRY_TOKEN }} | podman login -u ${{ secrets.USER }} --password-stdin git.skaville.rocks
|
||||||
|
- name: Push image with version
|
||||||
|
run: |
|
||||||
|
VERSION=$(cat VERSION)
|
||||||
|
podman push git.skaville.rocks/eneuber/paramod:$VERSION
|
||||||
|
- name: Push image latest
|
||||||
|
run: podman push git.skaville.rocks/eneuber/paramod:latest
|
||||||
2
.vscode/launch.json
vendored
2
.vscode/launch.json
vendored
@ -5,7 +5,7 @@
|
|||||||
"name": "Debug main.rs",
|
"name": "Debug main.rs",
|
||||||
"type": "lldb",
|
"type": "lldb",
|
||||||
"request": "launch",
|
"request": "launch",
|
||||||
"program": "${workspaceFolder}/target/debug/table-server",
|
"program": "${workspaceFolder}/target/debug/paramod",
|
||||||
"args": [],
|
"args": [],
|
||||||
"cwd": "${workspaceFolder}",
|
"cwd": "${workspaceFolder}",
|
||||||
"sourceLanguages": ["rust"],
|
"sourceLanguages": ["rust"],
|
||||||
|
|||||||
40
Cargo.lock
generated
40
Cargo.lock
generated
@ -1317,6 +1317,26 @@ dependencies = [
|
|||||||
"hashbrown 0.14.5",
|
"hashbrown 0.14.5",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "paramod"
|
||||||
|
version = "0.3.0"
|
||||||
|
dependencies = [
|
||||||
|
"actix-files",
|
||||||
|
"actix-web",
|
||||||
|
"chrono",
|
||||||
|
"config",
|
||||||
|
"influxdb",
|
||||||
|
"rumqttc",
|
||||||
|
"serde",
|
||||||
|
"serde_derive",
|
||||||
|
"serde_json",
|
||||||
|
"serde_yaml",
|
||||||
|
"tera",
|
||||||
|
"tokio",
|
||||||
|
"tokio-modbus",
|
||||||
|
"toml",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "parking_lot"
|
name = "parking_lot"
|
||||||
version = "0.12.5"
|
version = "0.12.5"
|
||||||
@ -2050,26 +2070,6 @@ dependencies = [
|
|||||||
"libc",
|
"libc",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "table-server"
|
|
||||||
version = "0.1.0"
|
|
||||||
dependencies = [
|
|
||||||
"actix-files",
|
|
||||||
"actix-web",
|
|
||||||
"chrono",
|
|
||||||
"config",
|
|
||||||
"influxdb",
|
|
||||||
"rumqttc",
|
|
||||||
"serde",
|
|
||||||
"serde_derive",
|
|
||||||
"serde_json",
|
|
||||||
"serde_yaml",
|
|
||||||
"tera",
|
|
||||||
"tokio",
|
|
||||||
"tokio-modbus",
|
|
||||||
"toml",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tera"
|
name = "tera"
|
||||||
version = "1.20.1"
|
version = "1.20.1"
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "table-server"
|
name = "paramod"
|
||||||
version = "0.1.0"
|
version = "__VERSION__"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
|
|||||||
25
Dockerfile
25
Dockerfile
@ -1,44 +1,33 @@
|
|||||||
|
|
||||||
# Build Stage
|
# Build Stage
|
||||||
FROM rust:1.75 as builder
|
FROM rust:1.81 as builder
|
||||||
|
|
||||||
WORKDIR /usr/src/app
|
WORKDIR /usr/src/app
|
||||||
|
|
||||||
# Copy manifest files
|
|
||||||
COPY Cargo.toml ./
|
COPY Cargo.toml ./
|
||||||
|
COPY Cargo.lock ./
|
||||||
# Copy source code and templates
|
|
||||||
COPY src ./src
|
COPY src ./src
|
||||||
COPY templates ./templates
|
COPY templates ./templates
|
||||||
COPY static ./static
|
COPY static ./static
|
||||||
|
|
||||||
# Build the application
|
|
||||||
RUN cargo build --release
|
RUN cargo build --release
|
||||||
|
|
||||||
# Runtime Stage
|
# Runtime Stage
|
||||||
FROM debian:bookworm-slim
|
FROM debian:bookworm-slim
|
||||||
|
|
||||||
# Install required dependencies
|
|
||||||
RUN apt-get update && apt-get install -y \
|
RUN apt-get update && apt-get install -y \
|
||||||
ca-certificates \
|
ca-certificates \
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
# Copy the binary from builder
|
COPY --from=builder /usr/src/app/target/release/paramod /app/paramod
|
||||||
COPY --from=builder /usr/src/app/target/release/table-server /app/table-server
|
|
||||||
|
|
||||||
# Copy templates and static files
|
|
||||||
COPY --from=builder /usr/src/app/templates /app/templates
|
COPY --from=builder /usr/src/app/templates /app/templates
|
||||||
COPY --from=builder /usr/src/app/static /app/static
|
COPY --from=builder /usr/src/app/static /app/static
|
||||||
|
COPY paramod.yaml /app/paramod.yaml
|
||||||
|
|
||||||
# Create directory for config file
|
|
||||||
RUN mkdir -p /app/data
|
|
||||||
|
|
||||||
# Expose port
|
|
||||||
EXPOSE 8080
|
EXPOSE 8080
|
||||||
|
|
||||||
# Set environment to use the data directory
|
ENV CONFIG_PATH=/app/paramod.yaml
|
||||||
ENV CONFIG_PATH=/app/data/table_config.json
|
|
||||||
|
|
||||||
# Run the binary
|
CMD ["/app/paramod"]
|
||||||
CMD ["/app/table-server"]
|
|
||||||
|
|||||||
34
README.md
34
README.md
@ -5,7 +5,7 @@ Ein einfacher Rust-Webserver, der eine editierbare 3x3-Tabelle bereitstellt und
|
|||||||
## Projektstruktur
|
## Projektstruktur
|
||||||
|
|
||||||
```
|
```
|
||||||
table-server/
|
paramod/
|
||||||
├── src/
|
├── src/
|
||||||
│ └── main.rs
|
│ └── main.rs
|
||||||
├── templates/
|
├── templates/
|
||||||
@ -46,8 +46,8 @@ table-server/
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Projekt erstellen
|
# Projekt erstellen
|
||||||
cargo new table-server
|
cargo new paramod
|
||||||
cd table-server
|
cd paramod
|
||||||
|
|
||||||
# Dependencies installieren und starten
|
# Dependencies installieren und starten
|
||||||
cargo run
|
cargo run
|
||||||
@ -60,39 +60,17 @@ Der Server läuft dann auf `http://localhost:8080`
|
|||||||
### Container bauen
|
### Container bauen
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker build -t table-server .
|
podman build -t paramod .
|
||||||
```
|
```
|
||||||
|
|
||||||
### Container starten
|
### Container starten
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker run -p 8080:8080 -v $(pwd)/data:/app/data table-server
|
poddman run -p 8080:8080 -v $(pwd)/data:/app/data paramod
|
||||||
```
|
```
|
||||||
|
|
||||||
Mit Volume-Mount bleibt die Konfigurationsdatei auch nach Container-Neustarts erhalten.
|
Mit Volume-Mount bleibt die Konfigurationsdatei auch nach Container-Neustarts erhalten.
|
||||||
|
|
||||||
### Docker Compose (optional)
|
|
||||||
|
|
||||||
Erstelle eine `docker-compose.yml`:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
version: '3.8'
|
|
||||||
|
|
||||||
services:
|
|
||||||
table-server:
|
|
||||||
build: .
|
|
||||||
ports:
|
|
||||||
- "8080:8080"
|
|
||||||
volumes:
|
|
||||||
- ./data:/app/data
|
|
||||||
restart: unless-stopped
|
|
||||||
```
|
|
||||||
|
|
||||||
Starten mit:
|
|
||||||
```bash
|
|
||||||
docker-compose up -d
|
|
||||||
```
|
|
||||||
|
|
||||||
## Verwendung
|
## Verwendung
|
||||||
|
|
||||||
1. Öffne `http://localhost:8080` im Browser
|
1. Öffne `http://localhost:8080` im Browser
|
||||||
@ -110,7 +88,7 @@ docker-compose up -d
|
|||||||
- MQTT: Toggle-Schalter für MQTT-Aktivierung
|
- MQTT: Toggle-Schalter für MQTT-Aktivierung
|
||||||
- InfluxDB: Toggle-Schalter für InfluxDB-Aktivierung
|
- InfluxDB: Toggle-Schalter für InfluxDB-Aktivierung
|
||||||
4. **💾 Speichern**: Änderungen persistieren
|
4. **💾 Speichern**: Änderungen persistieren
|
||||||
5. Alle Daten werden zentral in `table_config.json` gespeichert
|
5. Alle Daten werden zentral in `paramod.yaml` gespeichert
|
||||||
|
|
||||||
## API Endpoints
|
## API Endpoints
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user