git.fiddlerwoaroof.com
Browse code

(init)

Ed L authored on 23/12/2019 20:14:36
Showing 5 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,2 @@
1
+*~
2
+*.fasl
0 3
new file mode 100644
... ...
@@ -0,0 +1,46 @@
1
+FROM openfaas/classic-watchdog:0.18.1 as watchdog
2
+
3
+FROM fiddlerwoaroof/sbcl-static:1.5.8
4
+
5
+# Allows you to add additional packages via build-arg
6
+ARG ADDITIONAL_PACKAGE
7
+
8
+COPY --from=watchdog /fwatchdog /usr/bin/fwatchdog
9
+RUN chmod +x /usr/bin/fwatchdog
10
+RUN apt install -y ca-certificates ${ADDITIONAL_PACKAGE}
11
+
12
+# Add non root user
13
+RUN addgroup --system app && adduser --system --group app
14
+
15
+WORKDIR /home/app/
16
+
17
+COPY fn.asd           .
18
+RUN cp -R /root/quicklisp  .
19
+
20
+RUN chown -R app /home/app
21
+  
22
+USER app
23
+
24
+RUN mkdir bin
25
+ENV PATH "$PATH:/home/app/bin"
26
+
27
+RUN sbcl --disable-debugger --load /home/app/quicklisp/setup.lisp \
28
+         --eval "(mapcar 'asdf:load-asd (directory \"*.asd\"))" \
29
+         --eval "(quicklisp:quickload (asdf:system-depends-on (asdf:find-system :fn)))"
30
+
31
+USER ROOT
32
+COPY src /home/app/src
33
+
34
+USER app
35
+RUN sbcl --disable-debugger --load /home/app/quicklisp/setup.lisp \
36
+
37
+         --eval "(mapcar 'asdf:load-asd (directory \"*.asd\"))" \
38
+         --eval "(quicklisp:quickload :fn)" \
39
+         --eval "(sb-ext:save-lisp-and-die \"/home/app/bin/fn\" :executable t :toplevel 'cl-user::main)"
40
+
41
+ENV fprocess="/home/app/bin/fn"
42
+EXPOSE 8080
43
+
44
+HEALTHCHECK --interval=3s CMD [ -e /tmp/.lock ] || exit 1
45
+
46
+ENTRYPOINT ["fwatchdog"]
0 47
new file mode 100644
... ...
@@ -0,0 +1,13 @@
1
+;;; -*- Mode:Lisp; Syntax:ANSI-Common-Lisp; Package: ASDF-USER -*-
2
+(in-package :asdf-user)
3
+
4
+(defsystem :fn 
5
+  :description ""
6
+  :author "Ed L <edward@elangley.org>"
7
+  :license "MIT"
8
+  :depends-on (#:alexandria
9
+               #:uiop
10
+               #:serapeum)
11
+  :serial t
12
+  :components ((:module "src"
13
+                :components ((:file "main")))))
0 14
new file mode 100644
... ...
@@ -0,0 +1,10 @@
1
+version: 1.0
2
+provider:
3
+  name: openfaas
4
+  gateway: http://fn.elangley.org:8080
5
+functions:
6
+  test-1:
7
+    image: fiddlerwoaroof/faas-sbcl:latest
8
+    labels:
9
+      com.openfaas.scale.max: 5
10
+
0 11
new file mode 100644
... ...
@@ -0,0 +1,5 @@
1
+(in-package :cl-user)
2
+
3
+(defun main ()
4
+  (format t "Hello, World!~%~a"
5
+          (alexandria:read-stream-content-into-string *standard-input*)))