是否有用于在 Docker 上安装 cl-json(或其他 Quicklisp 库)的 Dockerfile?我见过的大多数安装说明都需要用户输入没有 --noinput 标志的命令,因此很难通过 Dockerfile 进行安装。
此外,许多说明似乎已过时或引用断开的链接和不存在的资源。使用 Dockerfile 以与 Quicklisp 等一致的方式安装它会很方便。
是否有用于在 Docker 上安装 cl-json(或其他 Quicklisp 库)的 Dockerfile?我见过的大多数安装说明都需要用户输入没有 --noinput 标志的命令,因此很难通过 Dockerfile 进行安装。
此外,许多说明似乎已过时或引用断开的链接和不存在的资源。使用 Dockerfile 以与 Quicklisp 等一致的方式安装它会很方便。
这是基于 SBCL 的应用程序的可能 Dockerfile。
FROM dparnell/minimal-sbcl
RUN sbcl --noinform \
--disable-ldb \
--lose-on-corruption \
--eval "(ql:quickload '(buildapp))" \
--eval '(buildapp:build-buildapp "/bin/buildapp")'
RUN buildapp --load /opt/quicklisp/setup.lisp \
--eval "(ql:quickload '(cl-json))" \
--output bin/executable
CMD executable
我将图像基于dparnell/minimal-sbcl,它预装了 Quicklisp。
然后我运行一次 SBCL 来构建buildapp
(这可能是一个单独的 docker 映像)。
然后,我运行buildapp
、加载quicklisp/setup.lisp
和安装cl-json
。您可以使用快速加载加载任意数量的依赖项,但我建议您在此处定义自己的system.asd
文件并列出依赖项。
https://lispcookbook.github.io/cl-cookbook/testing.html#continuous-integration
在本教程中,我们将 Gitlab CI 与daewok/lisp-devel Docker 映像一起使用,该映像包括多个 Lisp 实现和 Quicklisp,因此我们可以(ql:quickload "cl-json")
立即运行 lisp。