【问题标题】:Start play framework app from dockerfile从 dockerfile 开始播放框架应用程序
【发布时间】:2014-07-16 21:18:49
【问题描述】:

我想在 Dockerfile 中启动 play framework 2 应用程序。

假设我的游戏项目位于 ubuntu 的 /myapp 目录中。 当我手动启动它时,我只想说:

cd /myapp
sbt run

如何通过 Dockerfile 的 CMD 命令在其上运行sbt run

运行 sbt run 必须在 /myapp 目录中。如何告诉 CMD 命令应该从该目录运行 sbt run

【问题讨论】:

    标签: sbt docker


    【解决方案1】:

    仔细看看新的实验性docker feature 对于 sbt-native-packager。

    您应该能够通过几个简单的步骤从您的 play 应用程序构建一个 docker 容器。 添加维护者和暴露的端口

    import NativePackagerKeys._ // with auto plugins this won't be necessary soon
    
    name := "play-2.3"
    
    version := "1.0-SNAPSHOT"
    
    lazy val root = (project in file(".")).enablePlugins(PlayScala)
    
    scalaVersion := "2.11.1"
    
    libraryDependencies ++= Seq(
      jdbc,
      anorm,
      cache,
      ws
    )
    
    // setting a maintainer which is used for all packaging types
    maintainer := "Nepomuk Seiler"
    
    // exposing the play ports
    dockerExposedPorts in Docker := Seq(9000, 9443)
    

    然后运行

    sbt docker:publishLocal
    docker run -p 9000:9000 play-2-3:1.0-SNAPSHOT 
    

    更新 - 1.x 版本

    使用 sbt-native-packager 1.x(所以使用 play 2.4.x)docker 默认启用(因为 play 启用了 JavaServerAppPackaging 插件)。

    如果您没有播放应用程序,请启用 docker

    enablePlugins(JavaAppPackagingPlugin)
    
    maintainer := "Nepomuk Seiler"
    // note that the Docker scope is gone!
    dockerExposedPorts := Seq(9000, 9443)
    

    【讨论】:

    • 这对我不起作用: docker run -p 9000:9000 dragisak/demo:1.0-SNAPSHOT bin/demo: line 17: dirname: command not found bin/demo: line 18: basename:找不到命令
    • 请在github.com/sbt/sbt-native-packager/issues 上打开一个问题,并附上一个重现您的错误的小示例。
    【解决方案2】:

    你可以连接两个语句:

    FROM ubuntu
    
    ... more Dockerfile commands...
    
    CMD cd /myapp && sbt run
    

    您还可以使用 Dockerfiles 的WORKDIR 命令(请参阅http://docs.docker.io/reference/builder/#workdir)为您的 CMD 命令设置工作目录。但我从来没有为自己使用过这个(没有具体原因......):

    FROM ubuntu
    
    ... more Dockerfile commands...
    
    WORKDIR /myapp
    CMD sbt run
    

    【讨论】:

      猜你喜欢
      • 2016-06-12
      • 2015-12-17
      • 1970-01-01
      • 1970-01-01
      • 2019-03-23
      • 2012-11-24
      • 1970-01-01
      • 2014-02-03
      • 1970-01-01
      相关资源
      最近更新 更多