Tag: clojure

如何让Clojure Compojure应用程序通过Docker容器中的编译jar运行无头?

更新 :这个问题已经改变,因为最初的一组评论者留下了回应。 对任何混淆道歉。 这是我的代码库https://github.com/Integralist/spurious-clojure-example你可以用它作为我正在使用的例子。 请注意,上面的回购依赖于我还没有发布到Clojars的库(因为我还在testing它 – 因此打开了这个问题)。 你可以在这里看到库的源代码: https : //github.com/Integralist/spurious-clojure-aws-sdk-helper 我有一个用Compojure编写的“hello world”Clojurenetworking应用程序,当使用lein ring server lein run并lein run (因为我现在创build了一个-main函数),我工作的很好。 当编译成jar时,它也运行到一定程度,我运行java -jar app.jar 。 我现在的问题是,如果我尝试从Docker容器中运行默认的java -jar app.jar ,我得到以下错误告诉我… spurious-clojure-example is starting 2015-02-14 00:58:03.812:INFO:oejs.Server:jetty-7.xy-SNAPSHOT 2015-02-14 00:58:03.854:INFO:oejs.AbstractConnector:Started SelectChannelConnector@0.0.0.0:8080 Started server on port 8080 Exception in thread "main" java.awt.HeadlessException: 我的代码目前正在使用一个-main函数就像这样… (ns spurious-clojure-example.repl (:use spurious-clojure-example.handler ring.server.standalone [ring.middleware file-info file]) (:gen-class)) […]

将Compojure应用程序与rethinkdb和docker-compose耦合

我正在尝试使用clojure compojure app -compose将我的clojure compojure app与rethinkdb容器相关联: docker-compose.yml : version: "2" services: web: build: . ports: – "8080:8080" links: – rethinkdb rethinkdb: image: rethinkdb ports: – "8080" – "28015" – "29015" 但是我不断收到一个错误 “连接到RethinkDB数据库时出错” 我的handler.clj : (ns test.handler (:gen-class) (:require [compojure.core :refer :all] [compojure.route :as route] [environ.core :refer [env]] [ring.middleware.defaults :refer [wrap-defaults site-defaults]] [ring.middleware.reload :as reload] [rethinkdb.query […]

如何从Docker容器中访问私有Maven回购?

我们有许多用clojure编写的web服务,而且我们也有一些内部的共享依赖关系,我们保留在一个私有的maven仓库中。 Leiningen需要一个encryption的凭证文件,目前我们的每个开发人员都有自己的私钥,这些私钥在运行时用来解密凭证。 我试图迁移到容器,使部署和入职更容易,但马上我遇到了问题,从容器内lein run不能访问我的gpg键,这当然是在容器之外。 我设法使用docker run bash在容器内部生成一个密钥,并使用它来encryption凭据,但这不会扩展,因为我必须将未encryption的凭据保留在项目目录中。 我不确定最好的path是什么 – 我怎样才能安全地从私人回购拉动?

callback(或相当于)容器瓦特/ Rails应用程序完成启动时?

我有一个docker容器包含一个轨道应用程序。 运行容器启动一个类似如下的脚本: https : //github.com/defunkt/unicorn/blob/master/examples/init.sh ,它执行一些繁忙的工作,然后伸出一个类似于这个unicorn.rb脚本: https : //github.com/defunkt/unicorn/blob/master/examples/unicorn.conf.rb 。 我有一个clojure的networking应用程序,可以告诉这个容器运行。 这样做的请求是非阻塞的,当rails应用程序准备好接收请求时,站点的用户将以某种方式得到通知。 我可以想到各种hacky的方式来做到这一点,但有没有一种惯用的方式让容器让我知道什么时候麒麟铁轨应用程序准备好接收Web请求? 。 我想让它在我的应用程序中触发一些callbackurl,但我打开其他选项。 谢谢!

Clojure:使用aleph连接到TLS启用docker守护进程

我正尝试使用aleph连接到相互validation的Docker守护进程。 aleph文档显示您可以传递一个netty SSL上下文用于身份validation目的。 看来我正确地创build了SslContext,但所有的请求都closures了 (require '[aleph.http :as http]) (import '[io.netty.handler.ssl SslContext]) (import '[io.netty.handler.ssl SslProvider]) (import '[io.netty.handler.ssl SslContextBuilder]) (def ctx (doto (SslContextBuilder/forClient) (.keyManager (java.io.File. "certs/cert.pem") (java.io.File. "certs/client.pkcs8")) (.trustManager (java.io.File. "certs/ca.pem")) (.build))) (let [pool (http/connection-pool {:connection-options {:ssl-context ctx}})] @(http/get (str "http://" host ":" port "/info") {:pool pool})) 结果是:“ExceptionInfo连接已closuresclojure.core / ex-info(core.clj:4617)” 有没有人find使用TLS连接的好方法? 我已经尝试https://github.com/aphyr/less-awful-ssl,但是这并不适用于netty。 帮助thnx!

无法在Docker镜像中安装当前目录

我试图运行以下命令: docker run -it -v "$PWD":/usr/src/app -w /usr/src/app clojure lein uberjar 哪个应该挂载我的当前目录在docker的图像,并运行lein uberjar 。 我从https://hub.docker.com/_/clojure/得到这个命令 当我运行命令时,我得到以下输出: Couldn't find project.clj, which is needed for uberjar 我的本地目录中有一个project.clj文件。 当我进入图像时,显然我的本地目录不存在于图像中: $ docker run -it -v "$PWD":/usr/src/app -w /usr/src/app clojure root@b8749c8ff93d:/usr/src/app# ls root@b8749c8ff93d:/usr/src/app# 任何想法为什么我的工作目录没有被安装在图像中?

用leiningen构build一个非uberjar Docker镜像

我有一个依赖于Java库的clojure项目,当它被包含在uberjar中时,这个项目不起作用。 (它需要不同的XML描述符在不同的JAR文件中使用相同的文件名。) 我在Leiningen使用Docker的一切都依赖于构build和打包uberjar。 这也是我迄今为止构build的所有clojure Docker镜像。 有没有任何的leiningen插件,理解用多个jar文件打包Docker镜像,比如io.fabric8 / docker-maven-plugin呢?

Vim- Docker容器中的壁炉

现在我在Docker容器中运行我的vim环境,我以前只是使用一个脚本来初始化我的vim环境,但是每个发行版和操作系统编译vim的细微区别已经很多恼人的小差异,并将其用于Clojure开发。 作为我的vim环境的一部分,我使用vim-fireplace 。 但是当我在我的主机上运行我的repl时,vim在docker容器中的vim-fireplace无法与我的nrepl服务器build立连接。 我从vim-壁炉得到一个连接拒绝错误。 我知道这是因为默认情况下vim-fireplace使用localhost作为host-ip。 但即使当我手动呼叫 :Connect host_ip repl_port 它会说一个连接build立,并问我在哪里范围的连接。 但是我无法通过cqc运行一个命令,或者使用:Eval来评估一个文本块,得到同样的错误,连接被拒绝。 如果我在容器上安装Java和Lein,则可以通过连接到主机上的repl服务器 lein repl :connect host_ip:repl_port 并按预期执行命令。 我目前用于vim的插件安装程序在主机上运行时没有问题(连接到壁炉和运行命令)。 有没有一种方法,我可以在Docker中别名我的主机lo0适配器,以便我可以通过该接口连接到我的repl,或者不同的解决scheme? 我想避免在容器中运行java,lein和repl服务器,这样我就可以保持它对于其他非Clojure开发的精益和更普遍的用途。

Boot-clj连接被拒绝

试图在Docker中运行Boot时,使用adzerk / boot-clj镜像,我收到连接拒绝错误。 具体而言,当容器启动时,启动启动,然后输出堆栈跟踪。 跟踪(这是不容易复制和粘贴之间的计算机没有连接)本质上是做下载 – https://github.com/boot-clj/boot/releases/download/2.7.2/boot.jar -并收到“连接被拒绝”错误。 我问,并回答这个问题,希望它可以帮助别人。

我试图通过Docker与Clojure应用程序连接到MongoDB

我有以下docker组成规则… catalog-service: build: ./services/catalog ports: – "2000:3000" depends_on: – catalog-datastore restart: always catalog-datastore: image: mongo:3.0 command: mongod –smallfiles –quiet –logpath=/dev/null ports: – "27017:27017" 下面的clojure应用程序的Dockerfile … FROM clojure COPY . /usr/src/app WORKDIR /usr/src/app CMD ["lein", "ring", "server"] 和下面的连接代码在我的应用程序… (ns catalog.handler (:import com.mchange.v2.c3p0.ComboPooledDataSource) (:use compojure.core) (:use cheshire.core) (:use ring.util.response) (:require [compojure.handler :as handler] [ring.middleware.json :as middleware] [clojure.java.jdbc […]