
library/clojureClojure是Lisp编程语言的一种方言,是一种强调函数式编程的通用编程语言,运行在Java虚拟机(JVM)、公共语言运行时(CLR)和JavaScript引擎上。与其他Lisp语言一样,Clojure将代码视为数据,并具有宏系统。
本Docker镜像提供了Clojure的容器化环境,支持多种构建工具,可用于快速开发、构建和运行Clojure项目,也可作为构建其他基于Clojure的应用镜像的基础。
amd64、arm64v8、ppc64le、riscv64、s390x等架构clojure:lein-2.8.1),也可使用默认标签(如clojure:lein)注意:本镜像描述长度超过Docker Hub的25000字符限制,因此"支持的标签"列表已被截断。详情请参见GitHub文档。
Clojure有三种主要的项目构建和运行方式:
clojure:lein或clojure:lein-<version>(如clojure:lein-2.8.1)clojure:boot或clojure:boot-<version>clojure:tools-deps或clojure:tools-deps-<version>为现有Leiningen/Clojure项目添加以下Dockerfile:
dockerfileFROM clojure COPY . /usr/src/app WORKDIR /usr/src/app CMD ["lein", "run"]
构建并运行镜像:
console$ docker build -t my-clojure-app . $ docker run -it --rm --name my-running-app my-clojure-app
上述基础示例每次运行都会下载依赖、编译项目,启动较慢。优化版预下载依赖并编译为独立JAR:
dockerfileFROM clojure RUN mkdir -p /usr/src/app WORKDIR /usr/src/app COPY project.clj /usr/src/app/ RUN lein deps # 下载依赖(依赖变更时才会重新下载) COPY . /usr/src/app RUN mv "$(lein uberjar | sed -n 's/^Created \(.*standalone\.jar\)/\1/p')" app-standalone.jar # 编译为独立JAR CMD ["java", "-jar", "app-standalone.jar"]
同样使用上述docker build和docker run命令构建运行。
对于现有Lein/Clojure项目,可直接在容器内编译为JAR:
console$ docker run -it --rm -v "$PWD":/usr/src/app -w /usr/src/app clojure lein uberjar
编译后的JAR文件位于项目的target/uberjar目录。
有关使用Boot和tools-deps的详细说明,请参见官方镜像README。
Clojure镜像提供多种变体,适用于不同场景:
clojure:<version>(默认镜像)这是默认镜像,适用于大多数场景。既可作为临时容器(挂载源码并启动应用),也可作为构建其他镜像的基础。部分标签包含Debian或Ubuntu发行版代号(如bookworm、bullseye、jammy),表示基于相应的发行版构建,适合需要安装额外包的场景。
clojure:<version>-alpine基于Alpine Linux的镜像,体积更小(约5MB基础镜像)。主要适用于对镜像大小有严格要求的场景。注意:Alpine使用musl libc而非glibc,可能与某些依赖glibc的软件不兼容。通常不包含git、bash等额外工具,需在Dockerfile中自行安装。
clojure:<version>-slim精简版镜像,仅包含运行Clojure所需的最小依赖。仅推荐在空间受限且仅部署Clojure镜像的环境中使用,否则建议使用默认镜像。
clojure/目录中找到。library/clojure标签跟踪更新manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务