libreactor.dockerfile 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. FROM ubuntu:20.04 as builder
  2. RUN apt-get update -yqq
  3. RUN apt-get install -yqq wget git make automake libtool file gcc-10 g++-10
  4. WORKDIR /build
  5. ENV CC=gcc-10 AR=gcc-ar-10 NM=gcc-nm-10 RANLIB=gcc-ranlib-10
  6. RUN wget -q https://github.com/fredrikwidlund/libdynamic/releases/download/v2.2.0/libdynamic-2.2.0.tar.gz && \
  7. tar xfz libdynamic-2.2.0.tar.gz && \
  8. cd libdynamic-2.2.0 && \
  9. ./configure && \
  10. make install
  11. # Remove the unused "#include <dynamic.h>" directive since it causes a build error: "unknown type name 'pthread_t'".
  12. # Specify configure prefix so libclo gets installed in /usr/lib like libdynamic and libreactor.
  13. # Add march=native. Both libdynamic and libreactor are already using it.
  14. RUN wget -q https://github.com/fredrikwidlund/libclo/releases/download/v1.0.0/libclo-1.0.0.tar.gz && \
  15. tar xfz libclo-1.0.0.tar.gz && \
  16. cd libclo-1.0.0 && \
  17. sed -i '/#include <dynamic.h>/d' ./src/clo.c && \
  18. ./configure --prefix=/usr CFLAGS="-march=native" && \
  19. make install
  20. RUN git clone https://github.com/fredrikwidlund/libreactor --single-branch --branch release-2.0 libreactor-2 && \
  21. cd libreactor-2 && \
  22. git checkout 63fa717a8047 && \
  23. ./autogen.sh && \
  24. ./configure && \
  25. make install
  26. COPY src/ /build/src/
  27. COPY Makefile /build/Makefile
  28. RUN make libreactor
  29. FROM ubuntu:20.04
  30. WORKDIR /app
  31. COPY --from=builder /build/libreactor .
  32. RUN groupadd -r libreactor && useradd --no-log-init -r -g libreactor libreactor
  33. USER libreactor
  34. EXPOSE 8080
  35. CMD ["./libreactor"]