ninglex.dockerfile 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. FROM debian:bullseye-slim AS debian
  2. ENV DEBIAN_FRONTEND noninteractive
  3. ENV TERM linux
  4. ENV ROS_VERSION 22.12.14.113
  5. ENV LISP sbcl-bin/2.3.4
  6. ENV ASDF_VERSION 3.3.6
  7. ENV QUICKLISP_VERSION 2023-02-15
  8. RUN echo 'APT::Get::Install-Recommends "false";' > /etc/apt/apt.conf.d/00-general \
  9. && echo 'APT::Get::Install-Suggests "false";' >> /etc/apt/apt.conf.d/00-general \
  10. && echo 'APT::Get::Assume-Yes "true";' >> /etc/apt/apt.conf.d/00-general \
  11. && echo 'APT::Get::force-yes "true";' >> /etc/apt/apt.conf.d/00-general
  12. FROM debian AS roswell
  13. RUN apt-get update -q \
  14. && apt-get install --no-install-recommends -q -y \
  15. bzip2 \
  16. ca-certificates curl libcurl3-gnutls \
  17. make \
  18. && rm -rf /var/lib/apt/lists/* \
  19. && curl -L -O https://github.com/roswell/roswell/releases/download/v${ROS_VERSION}/roswell_${ROS_VERSION}-1_amd64.deb \
  20. && dpkg -i roswell_${ROS_VERSION}-1_amd64.deb \
  21. && ros quicklisp.dist=http://beta.quicklisp.org/dist/quicklisp/${QUICKLISP_VERSION}/distinfo.txt setup \
  22. && ros install ${LISP} \
  23. && ros use ${LISP} \
  24. && ros install asdf/${ASDF_VERSION} \
  25. && ros config \
  26. && rm roswell_${ROS_VERSION}-1_amd64.deb
  27. RUN echo 'export PATH=$HOME/.roswell/bin:$PATH' >> ~/.bashrc
  28. FROM roswell AS builder
  29. RUN apt-get update -q \
  30. && apt-get install --no-install-recommends -q -y \
  31. build-essential \
  32. libev-dev \
  33. git-core \
  34. && rm -rf /var/lib/apt/lists/*
  35. RUN mkdir -p ${HOME}/common-lisp/ \
  36. && cd ${HOME}/common-lisp/ \
  37. && git clone https://github.com/defunkydrummer/ninglex.git
  38. WORKDIR /ninglex
  39. ADD . .
  40. RUN ros build ninglex.ros
  41. FROM debian
  42. RUN apt-get update -q \
  43. && apt-get install --no-install-recommends -q -y \
  44. libev4 \
  45. && rm -rf /var/lib/apt/lists/*
  46. WORKDIR /ninglex
  47. COPY --from=builder /ninglex/ninglex .
  48. RUN ["chmod", "+x", "./ninglex"]
  49. EXPOSE 8080
  50. CMD ./ninglex --worker $(nproc) --address 0.0.0.0 --port 8080