From a6990d89246ee15dc442a5904dcca4c01fe489f6 Mon Sep 17 00:00:00 2001 From: petersulyok Date: Sun, 19 Nov 2023 22:56:42 +0100 Subject: [PATCH] New: smfc docker support added --- Docker.md | 59 ++++++++++++++++++++++++++++++++++++++ Dockerfile | 34 ++++++++++++++++++++++ docker/docker-build.sh | 5 ++++ docker/docker-compose.yaml | 18 ++++++++++++ docker/docker-start.sh | 19 ++++++++++++ 5 files changed, 135 insertions(+) create mode 100644 Docker.md create mode 100644 Dockerfile create mode 100755 docker/docker-build.sh create mode 100644 docker/docker-compose.yaml create mode 100755 docker/docker-start.sh diff --git a/Docker.md b/Docker.md new file mode 100644 index 0000000..9eeeb4c --- /dev/null +++ b/Docker.md @@ -0,0 +1,59 @@ +# smfc in docker +This file explains how `smfc` image can be executed in docker environment. + +Visit the [GitHub repository](https://github.com/petersulyok/smfc) of `smfc` for more details or reporting issues. + +# Usage + +## docker CLI +``` +$ docker run \ + -d \ + --rm \ + --log-driver=journald \ + --privileged=true \ + --name "smfc" \ + -v /dev:/dev:ro \ + -v /run:/run:ro \ + -v /opt/smfc/smfc.conf:/opt/smfc/smfc.conf:ro \ + -e SMFC_ARGS="-l 3" \ + petersulyok/smfc +``` +(see this example in `docker/docker-start.sh`) + +## docker-compose +``` +version: "2" +services: + smfc: + image: petersulyok/smfc + container_name: smfc + network_mode: none + logging: + driver: journald + privileged: true + environment: + - SMFC_ARGS=-l 3 + volumes: + - /dev:/dev:ro + - /run:/run:ro + - /opt/smfc/smfc.conf:/opt/smfc/smfc.conf:ro + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + restart: unless-stopped +``` +(see this example in `docker/docker-compose.yaml`) + +## Parameters +Use the following parameters to configure `smfc`: + +| Parameter | type | function | +|-------------|----------------------|------------------------------------------------------| +| `SMFC_ARGS` | environment variable | command-line arguments for `smfc` (-o, -l) | +| `smfc.conf` | volume | configuration file for `smfc`, mapped from host side | + +Please also note: +1. this image should be executed in `privileged` mode with access of `/dev` and `/run` folders +because of the tools (i.e. `ipmitool`, `smartctl` and `hddtemp`) +2. `smfc` log messages are forwarded to the host's `journald` daemon. Feel free to use a different [log driver](https://docs.docker.com/config/containers/logging/configure/) for docker. + diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..8d994e7 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,34 @@ +FROM alpine:3.18 + +LABEL org.opencontainers.image.title="smfc" +LABEL org.opencontainers.image.authors="petersulyok" +LABEL org.opencontainers.image.desciption="Super Micro fan control for linux servers." +LABEL org.opencontainers.image.url="https://github.com/petersulyok/smfc" + +RUN < /usr/share/misc/hddtemp.db + wget "https://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess" + wget "https://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub" + git clone https://github.com/vitlav/hddtemp.git + cd hddtemp/ + autoreconf -vif + ./configure --prefix=/usr --disable-nls + make + make install + cd / + rm -r /usr/share/man + rm -r /tmp/build + apk del .depends +EOT + +WORKDIR /opt/smfc +ADD --chmod=755 src/smfc.py smfc.py + +CMD /opt/smfc/smfc.py -c /opt/smfc/smfc.conf $SMFC_ARGS diff --git a/docker/docker-build.sh b/docker/docker-build.sh new file mode 100755 index 0000000..708895c --- /dev/null +++ b/docker/docker-build.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +version="3.3.0" + +docker build . -t petersulyok/smfc:$version -t petersulyok/smfc:latest --label "org.opencontainers.image.version=$version" -f Dockerfile diff --git a/docker/docker-compose.yaml b/docker/docker-compose.yaml new file mode 100644 index 0000000..2277b30 --- /dev/null +++ b/docker/docker-compose.yaml @@ -0,0 +1,18 @@ +version: "2" +services: + smfc: + image: petersulyok/smfc + container_name: smfc + network_mode: none + logging: + driver: journald + privileged: true + environment: + - SMFC_ARGS=-l 3 + volumes: + - /dev:/dev:ro + - /run:/run:ro + - /opt/smfc/smfc.conf:/opt/smfc/smfc.conf:ro + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + restart: unless-stopped \ No newline at end of file diff --git a/docker/docker-start.sh b/docker/docker-start.sh new file mode 100755 index 0000000..a12d499 --- /dev/null +++ b/docker/docker-start.sh @@ -0,0 +1,19 @@ +#!/bin/bash +# +# docker_start.sh (C) 2023, Peter Sulyok +# This script will start `smfc` image in docker. +# + +docker run \ + -d \ + --rm \ + --log-driver=journald \ + --privileged=true \ + --name "smfc" \ + -v /dev:/dev:ro \ + -v /run:/run:ro \ + -v /etc/timezone:/etc/timezone:ro \ + -v /etc/localtime:/etc/localtime:ro \ + -v /opt/smfc/smfc.conf:/opt/smfc/smfc.conf:ro \ + -e SMFC_ARGS="-l 3" \ + petersulyok/smfc