docker - 使用 deps.edn 在容器中安装依赖项

我继承了一个 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/

相关文章:

python - Azure Databricks python 命令显示当前集群配置

c++ - 如何在给定输入的数字中找到最大的数字?

c - 栈在使用Pthread的多线程程序中是如何工作的?

laravel - Laravel 中的 getClientOriginalExtension()

python - 如何找到中轴的关节和端点

html - 使 flexbox 垂直增长

android - 从协程(kotlin)切换到隔离(dart)

html -

  • 上的背景图像变为背景而不是列表元素符号

    c++ - 如何获取属于某个范围的 vector 中的最大元素?

    java - 为什么 java 编译器不提示 "\s"?