【发布时间】:2021-09-13 23:26:24
【问题描述】:
我继承了一个 clojure 代码库,并尝试将其容器化以用于本地开发。创建者使用deps.edn 来管理依赖项。但是,我不知道应该使用什么 RUN 命令来预安装项目的依赖项。
目前,我的入口点是以下['clj', '-m', 'app'],它会在我每次启动容器时安装依赖项。
如何使用 Docker RUN 命令为 clojure 项目预安装依赖项?
【问题讨论】:
我继承了一个 clojure 代码库,并尝试将其容器化以用于本地开发。创建者使用deps.edn 来管理依赖项。但是,我不知道应该使用什么 RUN 命令来预安装项目的依赖项。
目前,我的入口点是以下['clj', '-m', 'app'],它会在我每次启动容器时安装依赖项。
如何使用 Docker RUN 命令为 clojure 项目预安装依赖项?
【问题讨论】:
Deps/CLI 缓存 is described here。一般来说,依赖下载一次,并保存在项目目录的子目录中,名为
./.cpcache # "class path cache"
./.cpcache 目录类似于 Maven 和相关工具(例如 Leiningen)使用的 ~/.m2 缓存目录。
如果您在本地运行代码,您应该能够将 .cpcache 目录及其缓存的依赖项复制到您的 Docker 容器中。然后依赖项不需要重新下载
每次启动 Docker 容器。
附言
This template project 设置为通过 Kaocha 工具同时使用 lein 和 Deps/CLI 运行。您可能会发现比较很有帮助。
附言
您可能会发现通过构建一个包含所有代码和全部的 uberjar 文件来运行您的代码是最简单的方法 单个工件中的依赖项。您可以使用 Leiningen 或其他工具(例如 depstar)来执行此操作。然后,您可以使用单个命令调用应用程序,例如:
java -jar demo-0.1.0-standalone.jar
【讨论】:
运行这个应该可以做到:
clj -P
【讨论】: