我有一个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项目根据环境变量设置环网端口,但这也不起作用。
我对将命令行参数传递给命令的解决方案持开放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
8080端口,而不是8081端口),它可以正常工作。
替代方法:如果它们是不同的计算机,则可以使用操作系统的环境变量:
:ring {:handler project.handler/webServer
:init project.init/initialize
:port ~(System/getenv "RING_PORT")}
然后在开发机中将RING_PORT设置为8080,在生产机中将RING_PORT设置为80。
$ export RING_PORT=80
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句