1
0
Fork 0
mirror of https://git.rwth-aachen.de/acs/public/villas/node/ synced 2025-03-09 00:00:00 +01:00

docker: big update on Dockerfiles

This commit is contained in:
Steffen Vogel 2021-09-17 16:57:47 +02:00
parent 58e05126e5
commit 0a95edd59a
7 changed files with 138 additions and 96 deletions

View file

@ -23,11 +23,17 @@
ARG ALPINE_VERSION=3.13.1
FROM alpine:${ALPINE_VERSION} AS dev
ARG DISTRO=alpine
ARG ARCH=x86_64
ARG TRIPLET=x86_64-alpine-linux-musl
ARG PREFIX=/app
FROM alpine:${ALPINE_VERSION} AS dev
ARG DISTRO
ARG ARCH
ARG TRIPLET
ARG PREFIX
# Toolchain
RUN apk update && \
@ -75,8 +81,7 @@ RUN echo -e "#!/bin/sh\n" | \
chmod +x /usr/bin/udevadm /bin/ldconfig && \
mv /sbin/ldconfig /sbin/ldconfig.orig
ENV PREFIX=/app
RUN mkdir /app
RUN mkdir ${PREFIX}
# Install unpackaged dependencies from source
ADD packaging/deps.sh /
@ -109,12 +114,14 @@ RUN --security=insecure \
FROM alpine:${ALPINE_VERSION} AS app
ARG DISTRO=alpine
ARG ARCH=x86_64
ARG TRIPLET=x86_64-alpine-linux-musl
ARG DISTRO
ARG ARCH
ARG TRIPLET
ARG PREFIX
RUN echo "@testing http://dl-cdn.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories
# Build-time dependencies
RUN apk update
RUN apk add \
bash \
@ -141,26 +148,19 @@ RUN if [ "${ARCH}" != "armv6" -a "${ARCH}" != "armv7" ]; then \
nanomsg@testing; \
fi
COPY --from=builder /app /app
RUN ldconfig /app/lib /app/lib64
COPY --from=builder ${PREFIX}} ${PREFIX}}
RUN ldconfig ${PREFIX}/lib ${PREFIX}/lib64
ENV LD_LIBRARY_PATH=/app/lib:/app/lib64
ENV PATH=/app/bin:${PATH}
ENV LD_LIBRARY_PATH=${PREFIX}/lib:${PREFIX}/lib64
ENV PATH=${PREFIX}/bin:${PATH}
# Test if it runs
RUN /app/bin/villas-node -h 2>&1 > /dev/null
ARG GIT_REV=unknown
ARG GIT_BRANCH=unknown
ARG VERSION=unknown
RUN villas node -h 2>&1 > /dev/null
LABEL \
org.label-schema.schema-version="1.0" \
org.label-schema.name="VILLASnode" \
org.label-schema.license="GPL-3.0" \
org.label-schema.vcs-ref="$GIT_REV" \
org.label-schema.vcs-branch="$GIT_BRANCH" \
org.label-schema.version="$VERSION" \
org.label-schema.vendor="Institute for Automation of Complex Power Systems, RWTH Aachen University" \
org.label-schema.author.name="Steffen Vogel" \
org.label-schema.author.email="stvogel@eonerc.rwth-aachen.de" \

View file

@ -20,12 +20,16 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
###################################################################################
FROM centos:8 AS dev
ARG DISTRO=centos
ARG CENTOS_VERSION=8
ARG ARCH=x86_64
ARG TRIPLET=x86_64-linux-gnu
ARG GIT_REV=unknown
ARG GIT_BRANCH=unknown
ARG VERSION=unknown
ARG DISTRO=unknown
FROM ${DISTRO}:${CENTOS_VERSION} AS dev
ARG DISTRO
ARG ARCH
ARG TRIPLET
USER root
@ -67,10 +71,6 @@ RUN dnf -y install \
ENV echo /usr/local/lib >> /etc/ld.so.conf && \
echo /usr/local/lib64 >> /etc/ld.so.conf
ENV DISTRO=centos
ENV ARCH=x86_64
ENV TRIPLET=x86_64-linux-gnu
# or install unpackaged dependencies from source
ADD packaging/deps.sh /
RUN bash deps.sh
@ -101,9 +101,6 @@ LABEL \
org.label-schema.schema-version="1.0" \
org.label-schema.name="VILLASnode" \
org.label-schema.license="GPL-3.0" \
org.label-schema.vcs-ref="$GIT_REV" \
org.label-schema.vcs-branch="$GIT_BRANCH" \
org.label-schema.version="$VERSION" \
org.label-schema.vendor="Institute for Automation of Complex Power Systems, RWTH Aachen University" \
org.label-schema.author.name="Steffen Vogel" \
org.label-schema.author.email="stvogel@eonerc.rwth-aachen.de" \

View file

@ -21,12 +21,16 @@
###################################################################################
# You can choose between Debian and Ubuntu here
FROM debian:bullseye AS dev
ARG DISTRO=debian
ARG DEBIAN_VERSION=bullseye
ARG ARCH=x86_64
ARG TRIPLET=x86_64-linux-gnu
ARG GIT_REV=unknown
ARG GIT_BRANCH=unknown
ARG VERSION=unknown
ARG DISTRO=unknown
FROM ${DISTRO}:${DEBIAN_VERSION} AS dev
ARG DISTRO
ARG ARCH
ARG TRIPLET
ENV DEBIAN_FRONTEND=noninteractive
@ -70,10 +74,6 @@ RUN apt-get update && \
ENV echo /usr/local/lib >> /etc/ld.so.conf && \
echo /usr/local/lib64 >> /etc/ld.so.conf
ENV DISTRO=debian
ENV ARCH=x86_64
ENV TRIPLET=x86_64-linux-gnu
# or install unpackaged dependencies from source
ADD packaging/deps.sh /
RUN bash deps.sh
@ -101,9 +101,6 @@ LABEL \
org.label-schema.schema-version="1.0" \
org.label-schema.name="VILLASnode" \
org.label-schema.license="GPL-3.0" \
org.label-schema.vcs-ref="$GIT_REV" \
org.label-schema.vcs-branch="$GIT_BRANCH" \
org.label-schema.version="$VERSION" \
org.label-schema.vendor="Institute for Automation of Complex Power Systems, RWTH Aachen University" \
org.label-schema.author.name="Steffen Vogel" \
org.label-schema.author.email="stvogel@eonerc.rwth-aachen.de" \

View file

@ -21,15 +21,19 @@
###################################################################################
# You can choose between Debian and Ubuntu here
FROM debian:bullseye AS dev
ARG GIT_REV=unknown
ARG GIT_BRANCH=unknown
ARG VERSION=unknown
ARG DISTRO=unknown
ARG DISTRO=debian
ARG DEBIAN_VERSION=bullseye
ARG ARCH=armhf
ARG TRIPLET=arm-linux-gnueabihf
ARG PLATFORM=linux/arm/v7
ARG PREFIX=/app
FROM ${DISTRO}:${DEBIAN_VERSION} AS dev
ARG DISTRO
ARG ARCH
ARG TRIPLET
ARG PREFIX
ENV DEBIAN_FRONTEND=noninteractive
@ -46,7 +50,7 @@ RUN apt-get update && \
flex bison \
protobuf-compiler protobuf-c-compiler
# Dependencies
# Build-time dependencies
RUN apt-get update && \
apt-get install -y \
libssl-dev:${ARCH} \
@ -55,7 +59,8 @@ RUN apt-get update && \
libprotobuf-c-dev:${ARCH} \
uuid-dev:${ARCH} \
libconfig-dev:${ARCH} \
libnl-3-dev libnl-route-3-dev:${ARCH} \
libnl-3-dev \
libnl-route-3-dev:${ARCH} \
libcurl4-openssl-dev:${ARCH} \
libjansson-dev:${ARCH} \
libzmq3-dev:${ARCH} \
@ -80,10 +85,12 @@ ADD cmake/toolchains/debian-${ARCH}.cmake /
ENV PKG_CONFIG_PATH=/usr/lib/${TRIPLET}/pkgconfig:/usr/local/lib/${TRIPLET}/pkgconfig
ENV CMAKE_OPTS="-DCMAKE_TOOLCHAIN_FILE=/debian-${ARCH}.cmake \
-DCMAKE_INSTALL_LIBDIR=/usr/local/lib/${TRIPLET} \
-DLWS_INSTALL_LIB_DIR=/usr/local/lib/${TRIPLET}"
-DCMAKE_PREFIX_PATH=${PREFIX} \
-DCMAKE_INSTALL_PREFIX=${PREFIX} \
-DCMAKE_INSTALL_LIBDIR=${PREFIX}/lib/${TRIPLET} \
-DLWS_INSTALL_LIB_DIR=${PREFIX}/lib/${TRIPLET}"
ENV CONFIGURE_OPTS="--libdir=/usr/local/lib/${TRIPLET}"
ENV CONFIGURE_OPTS="--libdir=${PREFIX}/lib/${TRIPLET}"
RUN mkdir -p /usr/local/lib/${TRIPLET}
@ -95,9 +102,7 @@ ENV AS=${TRIPLET}-as
ENV AR=${TRIPLET}-ar
ENV RANLIB=${TRIPLET}-ranlib
ENV DISTRO=debian-multiarch
ENV ARCH=${ARCH}
ENV TRIPLET=${TRIPLET}
RUN mkdir ${PREFIX}
# Install unpackaged dependencies from source
ADD packaging/deps.sh /
@ -109,26 +114,74 @@ EXPOSE 443
WORKDIR /villas
FROM dev AS app
FROM dev AS builder
COPY . /villas/
RUN rm -rf /villas/build && mkdir /villas/build
WORKDIR /villas/build
RUN cmake .. && \
RUN cmake .. -DWITH_FPGA=OFF ${CMAKE_OPTS} && \
make -j$(nproc) doc && \
make -j$(nproc) install && \
make -j$(nproc) install
FROM --platform=${PLATFORM} ${DISTRO}:${DEBIAN_VERSION} AS app
ARG DISTRO
ARG ARCH
ARG TRIPLET
ARG PREFIX
ENV DEBIAN_FRONTEND=noninteractive
# Enable ${ARCH} architecture
RUN dpkg --add-architecture ${ARCH}
# Run-time dependencies
RUN apt-get update && \
apt-get install -y \
libgomp1:${ARCH} \
libprotobuf-c1:${ARCH} \
libssl1.1:${ARCH} \
libcgraph6:${ARCH} \
libcdt5:${ARCH} \
libgvc6:${ARCH} \
libuuid1:${ARCH} \
libconfig9:${ARCH} \
libnl-3-200:${ARCH} \
libnl-route-3-200:${ARCH} \
libcurl4:${ARCH} \
libjansson4:${ARCH} \
libzmq5:${ARCH} \
libnanomsg5:${ARCH} \
librabbitmq4:${ARCH} \
libmosquitto1:${ARCH} \
librdkafka1:${ARCH} \
libcomedi0:${ARCH} \
libibverbs1:${ARCH} \
librdmacm1:${ARCH} \
libusb-1.0-0:${ARCH} \
libre0:${ARCH} \
liblua5.3-0:${ARCH} \
libhiredis0.14:${ARCH} && \
rm -rf /var/lib/apt/lists/*
COPY --from=builder ${PREFIX} ${PREFIX}
RUN echo "${PREFIX}/lib" >> /etc/ld.so.conf && \
echo "${PREFIX}/lib/${TRIPLET}" >> /etc/ld.so.conf && \
ldconfig
ENV PATH=${PREFIX}/bin:${PATH}
# Test if it runs
RUN villas node -h 2>&1 > /dev/null
ENTRYPOINT ["villas"]
LABEL \
org.label-schema.schema-version="1.0" \
org.label-schema.name="VILLASnode" \
org.label-schema.license="GPL-3.0" \
org.label-schema.vcs-ref="$GIT_REV" \
org.label-schema.vcs-branch="$GIT_BRANCH" \
org.label-schema.version="$VERSION" \
org.label-schema.vendor="Institute for Automation of Complex Power Systems, RWTH Aachen University" \
org.label-schema.author.name="Steffen Vogel" \
org.label-schema.author.email="stvogel@eonerc.rwth-aachen.de" \

View file

@ -20,12 +20,16 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
###################################################################################
FROM fedora:33 AS dev
ARG DISTRO=fedora
ARG FEDORA_VERSION=33
ARG ARCH=x86_64
ARG TRIPLET=x86_64-linux-gnu
ARG GIT_REV=unknown
ARG GIT_BRANCH=unknown
ARG VERSION=unknown
ARG DISTRO=unknown
FROM ${DISTRO}:${FEDORA_VERSION} AS dev
ARG DISTRO
ARG ARCH
ARG TRIPLET
# Toolchain
RUN dnf -y install \
@ -85,10 +89,6 @@ RUN dnf -y install \
RUN echo /usr/local/lib >> /etc/ld.so.conf && \
echo /usr/local/lib64 >> /etc/ld.so.conf
ENV DISTRO=fedora
ENV ARCH=x86_64
ENV TRIPLET=x86_64-linux-gnu
# Install unpackaged dependencies from source
ADD packaging/deps.sh /
RUN bash deps.sh
@ -120,9 +120,6 @@ LABEL \
org.label-schema.schema-version="1.0" \
org.label-schema.name="VILLASnode" \
org.label-schema.license="GPL-3.0" \
org.label-schema.vcs-ref="$GIT_REV" \
org.label-schema.vcs-branch="$GIT_BRANCH" \
org.label-schema.version="$VERSION" \
org.label-schema.vendor="Institute for Automation of Complex Power Systems, RWTH Aachen University" \
org.label-schema.author.name="Steffen Vogel" \
org.label-schema.author.email="stvogel@eonerc.rwth-aachen.de" \

View file

@ -20,7 +20,9 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
###################################################################################
FROM fedora:33 AS dev
ARG DISTRO=fedora
ARG FEDORA_VERSION=33
FROM ${DISTRO}:${FEDORA_VERSION} AS dev
# Toolchain
RUN dnf -y install \
@ -45,11 +47,12 @@ COPY . /villas/
RUN rm -rf /villas/build && mkdir /villas/build
WORKDIR /villas/build
RUN cmake -DCPACK_GENERATOR=RPM ..
RUN make -j$(nproc) doc
RUN make -j$(nproc) package
FROM fedora:33
RUN cmake -DCPACK_GENERATOR=RPM .. && \
make -j$(nproc) doc && \
make -j$(nproc) package
FROM ${DISTRO}:${FEDORA_VERSION} as app
COPY --from=builder /villas/build/*.rpm /tmp/
RUN dnf -y install /tmp/*.rpm
@ -67,9 +70,6 @@ LABEL \
org.label-schema.schema-version="1.0" \
org.label-schema.name="VILLASnode" \
org.label-schema.license="GPL-3.0" \
org.label-schema.vcs-ref="$GIT_REV" \
org.label-schema.vcs-branch="$GIT_BRANCH" \
org.label-schema.version="$VERSION" \
org.label-schema.vendor="Institute for Automation of Complex Power Systems, RWTH Aachen University" \
org.label-schema.author.name="Steffen Vogel" \
org.label-schema.author.email="stvogel@eonerc.rwth-aachen.de" \

View file

@ -21,12 +21,17 @@
###################################################################################
# You can choose between Debian and Ubuntu here
FROM ubuntu:20.04 AS dev
ARG DISTRO=ubuntu
ARG UBUNTU_VERSION=20.04
ARG DISTRO=${DISTRO}
ARG ARCH=x86_64
ARG TRIPLET=x86_64-linux-gnu
ARG GIT_REV=unknown
ARG GIT_BRANCH=unknown
ARG VERSION=unknown
ARG DISTRO=unknown
FROM ${DISTRO}:${UBUNTU_VERSION} AS dev
ARG DISTRO
ARG ARCH
ARG TRIPLET
ENV DEBIAN_FRONTEND=noninteractive
@ -71,10 +76,6 @@ RUN apt-get update && \
ENV echo /usr/local/lib >> /etc/ld.so.conf && \
echo /usr/local/lib64 >> /etc/ld.so.conf
ENV DISTRO=ubuntu
ENV ARCH=x86_64
ENV TRIPLET=x86_64-linux-gnu
# or install unpackaged dependencies from source
ADD packaging/deps.sh /
RUN bash deps.sh
@ -102,9 +103,6 @@ LABEL \
org.label-schema.schema-version="1.0" \
org.label-schema.name="VILLASnode" \
org.label-schema.license="GPL-3.0" \
org.label-schema.vcs-ref="$GIT_REV" \
org.label-schema.vcs-branch="$GIT_BRANCH" \
org.label-schema.version="$VERSION" \
org.label-schema.vendor="Institute for Automation of Complex Power Systems, RWTH Aachen University" \
org.label-schema.author.name="Steffen Vogel" \
org.label-schema.author.email="stvogel@eonerc.rwth-aachen.de" \