我继承了一个 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 容器的每次启动。
另见 the Deps/CLI overview .
附言
This template project设置为通过 Kaocha 工具使用 lein
和 Deps/CLI 运行。您可能会发现比较很有帮助。
P.P.S.
您可能会发现通过构建一个包含所有代码的 uberjar 文件最容易运行您的代码和 单个工件中的依赖项。您可以使用 Leiningen 或其他工具(例如 depstar)执行此操作.然后,您可以使用如下命令调用该应用程序:
java -jar demo-0.1.0-standalone.jar
https://stackoverflow.com/questions/69170102/