FROM openfaas/classic-watchdog:0.18.1 as watchdog
FROM fiddlerwoaroof/sbcl-static:1.5.8
# Allows you to add additional packages via build-arg
ARG ADDITIONAL_PACKAGE
COPY --from=watchdog /fwatchdog /usr/bin/fwatchdog
RUN chmod +x /usr/bin/fwatchdog
RUN apt install -y ca-certificates ${ADDITIONAL_PACKAGE}
# Add non root user
RUN addgroup --system app && adduser --system --group app
WORKDIR /home/app/
COPY fn.asd .
RUN cp -R /root/quicklisp .
RUN chown -R app /home/app
USER app
RUN mkdir bin
ENV PATH "$PATH:/home/app/bin"
RUN sbcl --disable-debugger --load /home/app/quicklisp/setup.lisp \
--eval "(mapcar 'asdf:load-asd (directory \"*.asd\"))" \
--eval "(quicklisp:quickload (asdf:system-depends-on (asdf:find-system :fn)))"
USER ROOT
COPY src /home/app/src
USER app
RUN sbcl --disable-debugger --load /home/app/quicklisp/setup.lisp \
--eval "(mapcar 'asdf:load-asd (directory \"*.asd\"))" \
--eval "(quicklisp:quickload :fn)" \
--eval "(sb-ext:save-lisp-and-die \"/home/app/bin/fn\" :executable t :toplevel 'cl-user::main)"
ENV fprocess="/home/app/bin/fn"
EXPOSE 8080
HEALTHCHECK --interval=3s CMD [ -e /tmp/.lock ] || exit 1
ENTRYPOINT ["fwatchdog"]
|