;;;;; title: Development Images format: md URL: images/development.html ;;;;; These images contain the kitchen sink and are geared toward interactive development. We *do not* recommended that you use images for CI or deployment purposes. Currently, a single image is published in this category: - **[cl-devel](https://hub.docker.com/r/clfoundation/cl-devel):** Source at It is created only for `linux/amd64` and there is only one variant of the image, based on Debian Buster. These things can be changed if someone has the time and inclination. This image has a non-privileged user that is used by default: `cl`. The UID/GID of this user is 1000/1000, but [`fixuid`](https://github.com/boxboat/fixuid) is used in the entrypoint to change the UID/GID to whatever the container is started with. This is meant to make it easier for you to mount folders from your host into the image and not worry about permissions getting screwed up. This image contains the following Lisp implementations: - ABCL v1.8.0 (on jdk11) - CCL v1.12.0 - ECL v20.4.24 - SBCL v2.1.0 Additionally, the following Lisp utilities are installed: - **ASDF v3.3.4:** The source code is located in `/usr/local/share/common-lisp/source/asdf`. The first time you attempt to use ASDF for anything non trivial, it will upgrade itself to this version. - **Quicklisp:** Client v2020-01-04 and Dist v2020-12-20. It is installed to `/home/cl/quicklisp/` - **CL Launch v4.1.3:** A useful program for running Common Lisp scripts. Last, the goal is to install all system packages that would be useful for development. This includes git, curl, etc (everything from the [`buildpack-deps`](https://hub.docker.com/_/buildpack-deps) image). Additionally, every foreign dependency of every system in Quicklisp. It is quite probable we're missing something for Quicklisp. If you find this to be the case, please open an issue. Each Lisp implementation a user init file that loads ASDF and then loads Quicklisp if the `QUICKLISP_LOAD` environment variable is "yes/true/1/y" (which it is by default). ## Longterm development All of this is to make it trivial for a Lisp newbie to get up and running easily, using the tools most commonly used in the community. However, if you get to the point of actually doing development with this image, we **strongly** recommend mounting files from your Docker host into the image. This way you can easily develop code using emacs on your host, you can customize the config, and you can persist the fasl cache so things don't take as long to build. We recommend creating a folder on your host's filesystem and mounting it directly on top of `/home/cl` in the container. You can then create Lisp init files that suit you, install the version of Quicklisp you want, etc. ASDF by default cache fasls to `/home/cl/.cache/common-lisp`, so mounting a folder to `/home/cl` will cause those to be persisted between containers as well. If you mount a folder onto `/home/cl`, you can populate it with the default config by running the `unpack-default-home-dir` script. ## slime-docker The [`slime-docker`](https://gitlab.common-lisp.net/cl-docker-images/slime-docker) Emacs package has been configured to use this image as its default. Check out its README for more information on how to integrate this image into your SLIME workflow.