gpt4 book ai didi

clojure - 如何根据配置文件设置环端口

转载 作者:行者123 更新时间:2023-12-03 22:47:01 25 4
gpt4 key购买 nike

我有一个 clojure ring 项目,我希望能够根据配置文件设置端口号。目前我有来自 project.clj 的以下片段

:plugins [[lein-ring "0.8.13"]]
:ring {:handler project.handler/webServer
:init project.init/initialize
:port 80}
:profiles {:dev {:jvm-opts ["-Dproperty-file=dev.properties"]}
:ci {:jvm-opts ["-Dproperty-file=ci.properties"]}
:uberjar {:aot :all}})

我想要做的是将开发环境的端口设置为8080,然后将生产环境的端口设置为80。我会一直在端口 80 上运行,但这需要 root 权限,而不是我想为开发运行做的事情。我曾尝试(盲目地)将环端口放入 uberjar 配置文件中,但这没有用。我也尝试使用 environ project根据环境变量设置环端口,但这也不起作用。

我对将命令行参数传递给 java -jar [...]-standalone.jar 的解决方案持开放态度命令,但我被困在如何获得任何工作方法上。

最佳答案

你不需要环境。当您需要访问源代码中的配置变量时使用它。在 project.clj你可以直接这样做:

:profiles {:dev        {:jvm-opts ["-Dproperty-file=dev.properties"]
:ring {:port 8080}}
:ci {:jvm-opts ["-Dproperty-file=ci.properties"]
:ring {:port 80}}
:uberjar {:aot :all
:ring {:port 80}}})

我已经测试过这个(没有 jvm-opts 和端口 8081 而不是 80)并且它有效。

替代方案:如果它们是不同的机器,您可以使用操作系统的环境变量:

:ring {:handler project.handler/webServer
:init project.init/initialize
:port ~(System/getenv "RING_PORT")}

然后在你的开发机器上将 RING_PORT 设置为 8080,在生产机器上设置为 80。

$ export RING_PORT=80

关于clojure - 如何根据配置文件设置环端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27945399/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com