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:
parent
58e05126e5
commit
0a95edd59a
7 changed files with 138 additions and 96 deletions
|
@ -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" \
|
||||
|
|
|
@ -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" \
|
||||
|
|
|
@ -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" \
|
||||
|
|
|
@ -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" \
|
||||
|
|
|
@ -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" \
|
||||
|
|
|
@ -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" \
|
||||
|
|
|
@ -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" \
|
||||
|
|
Loading…
Add table
Reference in a new issue