1
0
Fork 0
mirror of https://git.rwth-aachen.de/acs/public/villas/node/ synced 2025-03-16 00:00:02 +01:00
VILLASnode/packaging/docker/Dockerfile.fedora

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

135 lines
3.2 KiB
Text
Raw Permalink Normal View History

2021-01-08 22:58:49 +01:00
# Fedora Dockerfile
#
2022-03-15 09:18:01 -04:00
# Author: Steffen Vogel <post@steffenvogel.de>
2022-03-15 09:28:57 -04:00
# SPDX-FileCopyrightText: 2014-2023 Institute for Automation of Complex Power Systems, RWTH Aachen University
2022-07-04 18:20:03 +02:00
# SPDX-License-Identifier: Apache-2.0
2021-09-17 16:57:47 +02:00
ARG DISTRO=fedora
ARG FEDORA_VERSION=36
2021-09-21 13:43:34 +02:00
ARG REF=unknown
2021-09-17 16:57:47 +02:00
FROM ${DISTRO}:${FEDORA_VERSION} AS dev
ARG DISTRO
# Toolchain
RUN dnf -y install \
gcc gcc-c++ \
2020-06-06 23:16:19 +02:00
pkgconfig cmake make \
autoconf automake autogen libtool \
2021-09-17 14:32:27 +02:00
texinfo git curl tar \
flex bison \
protobuf-compiler protobuf-c-compiler \
clang-tools-extra
# Several tools only needed for developement and testing
RUN dnf -y install \
openssh-clients \
2018-10-21 20:33:13 +01:00
jq nmap-ncat \
iproute iproute-tc \
python python-devel python-pip \
gdb gdb-gdbserver \
cppcheck \
xmlto dblatex rubygem-asciidoctor \
psmisc procps-ng \
rabbitmq-server mosquitto
# Tools for debugging, coverage, profiling
RUN pip install \
gcovr \
protobuf
# Dependencies
RUN dnf -y install \
2020-06-07 01:38:05 +02:00
openssl-devel \
libuuid-devel \
libconfig-devel \
libwebsockets-devel \
2020-06-07 01:38:05 +02:00
libcurl-devel \
jansson-devel \
spdlog-devel \
fmt-devel \
libnl3-devel \
graphviz-devel \
protobuf-devel \
protobuf-c-devel \
2020-06-07 01:38:05 +02:00
zeromq-devel \
nanomsg-devel \
librabbitmq-devel \
mosquitto-devel \
librdkafka-devel \
2020-06-07 01:38:05 +02:00
libibverbs-devel \
librdmacm-devel \
2021-02-19 01:54:21 +01:00
libusb-devel \
2021-06-16 10:36:19 -04:00
lua-devel \
hiredis-devel \
libnice-devel \
libmodbus-devel
2020-06-07 01:38:05 +02:00
# Add local and 64-bit locations to linker paths
RUN echo /usr/local/lib >> /etc/ld.so.conf && \
echo /usr/local/lib64 >> /etc/ld.so.conf
2020-06-07 01:38:05 +02:00
# Install unpackaged dependencies from source
2020-05-11 12:58:18 +02:00
ADD packaging/deps.sh /
RUN bash deps.sh
RUN ldconfig
# Workaround for libnl3's search path for netem distributions
RUN ln -s /usr/lib64/tc /usr/lib/tc
COPY ./python /python
RUN python -m venv /venv && \
source /venv/bin/activate && \
pip install /python[dev] && \
rm -r /python
# Expose ports for HTTP and WebSocket frontend
EXPOSE 80
EXPOSE 443
2022-03-14 22:26:08 -04:00
ENV LC_ALL C.UTF-8
ENV LANG C.UTF-8
WORKDIR /villas
2020-11-12 01:16:33 +01:00
FROM dev AS dev-vscode
# create a non-root user for vscode to use
ARG USERNAME=villas
ARG USER_UID=1000
ARG USER_GID=$USER_UID
RUN groupadd --gid $USER_GID $USERNAME \
&& useradd --uid $USER_UID --gid $USER_GID -m $USERNAME \
&& echo $USERNAME ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/$USERNAME \
&& chmod 0440 /etc/sudoers.d/$USERNAME
2020-11-12 01:16:33 +01:00
FROM dev AS app
ARG CMAKE_OPTS
2020-11-12 01:16:33 +01:00
COPY . /villas/
WORKDIR /villas/build
2021-09-21 13:43:34 +02:00
RUN --mount=type=cache,id=${DISTRO}-${FEDORA_VERSION}-${ARCH}-${REF},target=/villas/build \
cmake ${CMAKE_OPTS} .. && \
2020-11-12 01:16:33 +01:00
make -j$(nproc) install && \
ldconfig
WORKDIR /villas
2020-11-12 01:16:33 +01:00
ENTRYPOINT ["villas"]
2018-05-15 18:59:06 +02:00
LABEL \
org.label-schema.schema-version="1.0" \
org.label-schema.name="VILLASnode" \
2022-07-04 18:20:03 +02:00
org.label-schema.license="Apache-2.0" \
2018-05-15 18:59:06 +02:00
org.label-schema.vendor="Institute for Automation of Complex Power Systems, RWTH Aachen University" \
org.label-schema.author.name="Steffen Vogel" \
2022-03-15 09:18:01 -04:00
org.label-schema.author.email="post@steffenvogel.de" \
2018-05-15 18:59:06 +02:00
org.label-schema.description="A image containing all build-time dependencies for VILLASnode based on Fedora" \
org.label-schema.url="http://fein-aachen.org/projects/villas-framework/" \
2020-02-02 13:10:15 +01:00
org.label-schema.vcs-url="https://git.rwth-aachen.de/acs/public/villas/node" \
2018-05-15 18:59:06 +02:00
org.label-schema.usage="https://villas.fein-aachen.org/doc/node-installation.html#node-installation-docker"