vlmcsd
Really. Don't worry.
arm32v6/armel, RPi2 & RPi3: arm32v7/armhf, RPi4 & RPi5: arm64/aarch64) and x86_64 (Intel/AMD-based) Linux / macOS / Windows WSLdocker run --detach --rm --name="vlmcsd" --publish="1688:1688/tcp" bridgehead/vlmcsd
or more concise:
docker run -d -p 1688:1688 bridgehead/vlmcsd
vlmcsd-specific switches after the image name, like:a server running in the foreground with additional switches:
docker run -p 1688:1688 bridgehead/vlmcsd /vlmcsd -D -d -e -v
a client that contacts the above server at some ip:
docker run --rm bridgehead/vlmcsd /vlmcs 192.168.0.1
or get help with:
docker run --rm bridgehead/vlmcsd /vlmcsd --help
or
docker run --rm bridgehead/vlmcsd /vlmcs --help
This version of vlmcs/vlmcsd should run on basically any Raspberry Pi or x86_64-based Linux (Intel/AMD) distro.
With 2,5 MB compressed size (depending on the CPU architecture), it's smol.
Uncompressed, it takes around 5-8 MB, only including the alpine base image and the two binaries vlmcs & vlmcsd. Still smol.
It uses 256 KB of RAM when running as a server. Tiny.
Without any parameters, the container starts vlmcsd in _ server mode _, waiting for connections from clients.
Nothing to configure. It just works.
# syntax=docker/dockerfile:1
# Source: https://github.com/Wind4/vlmcsd.git
FROM --platform=linux/arm/v6 alpine:3.12 AS alpine_armv6
FROM --platform=linux/arm/v7 alpine AS alpine_armv7
FROM --platform=${TARGETPLATFORM} alpine AS alpine_arm64
FROM --platform=${TARGETPLATFORM} alpine AS alpine_amd64
FROM alpine_${TARGETARCH}${TARGETVARIANT} AS build
WORKDIR /root
RUN apk --no-cache add build-base gcc abuild binutils cmake git
RUN git clone https://github.com/Wind4/vlmcsd.git .
RUN make
RUN chmod +x bin/vlmcs*
#========================================================
FROM alpine_${TARGETARCH}${TARGETVARIANT} AS base
ARG VERSION
LABEL org.opencontainers.image.title="vlmcsd"
LABEL org.opencontainers.image.description="vlmcsd based on alpine"
LABEL org.opencontainers.image.vendor="https://github.com/Wind4/vlmcsd.git"
LABEL org.opencontainers.image.version="v${VERSION}"
LABEL org.opencontainers.image.revision="https://github.com/Wind4/vlmcsd/releases"
LABEL org.opencontainers.image.license=""
LABEL org.opencontainers.image.authors="[email protected]"
LABEL org.opencontainers.image.url="https://hub.docker.com/repository/docker/bridgehead/vlmcsd"
LABEL org.opencontainers.image.source="https://hub.docker.com/repository/docker/bridgehead/vlmcsd"
LABEL org.opencontainers.image.documentation="https://hub.docker.com/repository/docker/bridgehead/vlmcsd"
LABEL org.opencontainers.image.base.digest=""
LABEL org.opencontainers.image.base.name=""
LABEL org.opencontainers.image.ref.name=""
EXPOSE 1688
COPY --from=build /root/bin/vlmcs* /
# use as server (default)
# -D daemonize-not, keep in foreground
# -d disconnect clients after each request
# -e log to stdout
# -v log verbose
CMD ["/vlmcsd","-D","-d","-e","-v"]
# to use as client: docker run --rm bridgehead/vlmcsd /vlmcs <ip_of_vlmcsd-server>
Note that the RPi1/2, aka arm32v6 aka armel image explicitly requires the alpine release v3.12. Versions after that have different requirements (esp. time64). See here for more: https://wiki.alpinelinux.org/wiki/Release_Notes_for_Alpine_3.13.0
Alpine v3.12 is essentially the last version to be usable on old Raspberry Pi 1's and 2's.
docker buildx build --builder=container --push --no-cache --build-arg VERSION=1113 --tag bridgehead/vlmcsd:latest --platform linux/arm/v6,linux/arm/v7,linux/arm64,linux/amd64 --file path/to/Dockerfile .
name: vlmcsd
services:
vlmcsd:
image: docker.io/bridgehead/vlmcsd:latest
container_name: vlmcsd
ports:
- "1688:1688/tcp"
restart: unless-stopped
Have fun and a very nice day!
Content type
Image
Digest
sha256:68eb214f0…
Size
2.5 MB
Last updated
about 2 years ago
docker pull bridgehead/vlmcsd