Tag: 斯卡拉

在使用sbt-native-packager构builddocker软件包时使用重复映射

我正在使用sbt-native-packager在Scala中构build基于Akka HTTP应用程序的Docker镜像。 但是,最近它已经开始运行sbt docker:publishLocal时抛出以下错误sbt docker:publishLocal命令: [info] Loading project definition from ~/directory/project [info] Set current project to fortytwo-api (in build file:~/directory/) SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. [info] Wrote ~/directory/target/scala-2.11/fortytwo-api_2.11-1.0.pom java.lang.RuntimeException: Duplicate mappings: ~/directory/target/docker/stage/opt/docker/lib/org.scalaz.scalaz-core_2.11-7.1.0.jar from ~/.ivy2/maven-cache/org/scalaz/scalaz-core_2.11/7.1.0/scalaz-core_2.11-7.1.0.jar ~/.ivy2/cache/org.scalaz/scalaz-core_2.11/bundles/scalaz-core_2.11-7.1.0.jar ~/directory/target/docker/stage/opt/docker/lib/com.typesafe.config-1.2.1.jar from ~/.ivy2/maven-cache/com/typesafe/config/1.2.1/config-1.2.1.jar ~/.ivy2/cache/com.typesafe/config/bundles/config-1.2.1.jar ~/directory/target/docker/stage/opt/docker/lib/com.google.protobuf.protobuf-java-2.5.0.jar from […]

有没有办法从两个jar子,如每个jar子位于它自己的层build立docker的形象

我使用sbt-native-packager和DockerPlugin来构build一个应用程序。 这个应用程序由两个项目组成:一个频繁变化,另一个几乎是静态的。 构build看起来像这样: lazy val root = myProject("my-backend", ".") .enablePlugins(JavaAppPackaging, DockerPlugin).settings(dockerSettings: _*) .settings(dockerExposedPorts in Docker := List(80, 8080)) .dependsOn(servicesProject, coreProject) … 有没有办法build立一个每个项目(servicesProject,coreProject)将在一个单独的图层的Docker镜像? 在这种情况下,不需要一直下载静态/核心层。

播放更改RUNNING_PID文件path

我试图将RUNNING_PID文件存储在/ var / run而不是根目录下。 尝试了所有的选项build议: 关于这个问题的另一个SO问题 并在文档中build议解决scheme: 播放其他configuration 然而,当我启动我的应用程序时,RUNNING_PID文件在根目录中创build,并且/var/run/play.pid保持空

sbt没有生成bin目录时,暂存或发布docker+其他问题

我有一个直接的问题,如标题中所述,当运行docker:publishLocal docker:stage或docker:publishLocal时, sbt不会生成bin目录(指向ENTRYPOINT脚本的目录)。 我以前从来没有见过这样的行为,所以我对于如何着手有些遗憾,但是我也应该提到,我已经以不同于往常的方式来build立这个项目了。 项目设置如下,在其根目录下: – infrastructure – app – build.sbt – target/… – another-project – project – BuildDefinition.scala – plugins.sbt – build.properties – build.sbt 在我的根BuildDefinition.scala我已经build立了所有的项目定义,包括不需要所有我需要的app项目。 在root的build.sbt ,我只有: sourcesInBase in ThisBuild := false name := "fantasy-factory" 在app目录的build.sbt中,我只有Docker相关的东西 : dockerBaseImage in Docker := "java:8-jre" mainClass := Some("akka.Main") javaOptions in Universal ++= Seq("com.nv.microservice.as.cluster.ClusterEntryPoint") version in Docker := […]

一旦docker达到其最大内存限制,AWS EB应该创build新的实例

我已经使用使用Akka-HTTP( https://github.com/theiterators/akka-http-microservice )和Scala编写的Elastic Beanstalk在AWS服务器上部署了我的dockerized微服务。 我已经为每个docker分配了512mb的内存大小和性能问题。 我注意到,当服务器获得更多的请求(如20%,23%,45%…)和负载时,CPU使用率增加,然后自动降到正常状态(0.88%)。 但是,每次请求的内存使用量都在不断增加,即使CPU使用率达到正常阶段,仍然无法释放未使用的内存,并且达到了100%,而且docker自己被杀死并重新启动。 我也在EB中启用了自动缩放function来处理大量的请求。 因此,只有在运行实例的CPU使用率达到其最大值后,才会创build另一个重复实例。 内存使用量达到最大限制(即512MB中的500MB)时,如何设置自动缩放以创build另一个实例? 请给我们一个解决scheme/方法来尽快解决这些问题,因为这是我们的一个非常关键的问题?

如何通过使用sbt-docker或手动编写docker文件在docker中运行sbt项目?

我一直在试图学习在docker中运行一个sbt项目。 我也想用喷雾。 我正在github中的sbt-docker提供的例子: https : //github.com/marcuslonnberg/sbt-docker/tree/master/examples/package-spray当我拉项目,它工作正常,我可以运行docker集装箱。 有一个文件在项目>项目> PackageSprayBuild.scala我不知道如何使用这个文件。 另外,给出的例子没有一个plugins.sbt文件。 然后我试图创build我的单独的项目。 我的plugins.sbt看起来像这样: logLevel := Level.Warn addSbtPlugin("se.marcuslonnberg" % "sbt-docker" % "1.2.0") 我的build.sbt看起来几乎和我上面提到的例子一样。 name := "demo-docker-sbt" version := "1.0" scalaVersion := "2.11.7" resolvers += "spray repo" at "http://repo.spray.io/" libraryDependencies ++= Seq( "io.spray" % "spray-can" % "1.2.0", "io.spray" % "spray-routing" % "1.2.0", "com.typesafe.akka" %% "akka-actor" % "2.2.3") enablePlugins(DockerPlugin) // […]

斯卡拉SBT设置dockerRepository“未指定发布的存储库”

我正在尝试使用以下命令将一个scala版本发布到dockerregistry中: ./sbt "; set dockerRepository := Some(\"registryname/project\"); docker:publish" 我正在指定dockerRepository,但是在运行命令时会抛出以下错误: [error] You cannot push a "root" repository. Please rename your repository to <user>/<repo> (ex: <user>/example) java.lang.RuntimeException: Repository for publishing is not specified. [error] (all/*:publishConfiguration) Repository for publishing is not specified. [error] (server/docker:publish) Nonzero exit value: 1 [error] (config/*:publishConfiguration) Repository for publishing is not specified. [error] Total […]

SBT在用完公羊时死亡

我试图运行我的斯卡拉应用程序在800MB的docker容器,( docker run -m=800m mindlevel ),但它被完成编译前被杀死。 [info] Compiling 10 Scala sources to /root/mindlevel-backend/target/scala-2.12/classes… [info] 'compiler-interface' not yet compiled for Scala 2.12.1. Compiling… [info] Compilation completed in 8.631 s /usr/local/sbt/bin/sbt-launch-lib.bash: line 58: 57 Killed "$@" 我试图限制SBT堆: CMD ["sbt", "-mem", "700", "run"] 但它仍然在同一个地方被杀害。 docker容器没有任何限制,它运行良好。 在EC2微型实例(1GB RAM)中运行时,它也会崩溃,对SBT和Docker有限制或没有限制。 我缺less一些限制吗?

PredictionIO通用推荐引擎

我拉了“zephrax / docker-prediction.io-universal-recommender” docker镜像,并按照https://github.com/PredictionIO/template-scala-parallel-universal-recommendation中的说明进行操作,当我执行pio build it pio build在这一行,而不是: root@0016c0672bc4:/universal-recommender-0.6.0# pio build –verbose SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/PredictionIO-0.11.0- incubating/lib/spark/pio-data-hdfs-assembly-0.11.0- incubating.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/PredictionIO-0.11.0- incubating/lib/pio-assembly-0.11.0- incubating.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory] [INFO] [Engine$] Using command '/PredictionIO-0.11.0- incubating/sbt/sbt' at /universal-recommender-0.6.0 to […]

具有只读基本目录的SBT

我在一个Docker容器中使用SBT左轮手枪进行实验。 我将基础目录挂载为Docker卷。 它工作得很好,除了一个问题:Docker不映射用户,所以我最终得到的不是主机用户所拥有的project/project/和project/target/目录。 我能够通过将这添加到基本目录中的build.sbt来重定位target/目录: target := file("/data/target") 但我不知道如何自定义project/目录中创build的文件的位置。 有没有可能以任何方式build立一个SBT构build所有的构build输出在基础目录之外创build?