在 Docker 图像中安装 Quicklisp 库

Installing Quicklisp libraries in a Docker image

在 Docker 上是否有用于安装 cl-json(或其他 Quicklisp 库)的 Docker 文件?我见过的大多数安装说明都要求用户输入没有 --noinput 标志的命令,因此很难通过 Docker 文件进行安装。

此外,许多说明似乎已过时或引用了损坏的链接和不存在的资源。使用 Docker 文件以与例如一致的方式安装它会很方便。速记

这是基于 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 pre-installed。

然后我 运行 SBCL 一次构建 buildapp(可能是一个单独的 docker 图像)。

然后,我运行buildapp,加载quicklisp/setup.lisp并安装cl-json。您可以使用快速加载加载任意数量的依赖项,但我建议定义您自己的 system.asd 文件并在其中列出依赖项。

https://lispcookbook.github.io/cl-cookbook/testing.html#continuous-integration

在本教程中,我们将 Gitlab CI 与包含多个 Lisp 实现和 Quicklisp 的 daewok/lisp-devel Docker 图像一起使用,因此我们可以 运行 一个 lisp 和 (ql:quickload "cl-json")马上。