如何编写dockerfile以在容器中运行sbt项目

如何编写dockerfile以在容器中运行sbt项目,docker,sbt,Docker,Sbt,我想在不使用任何sbt插件的情况下手动编写dockerfile。 我使用的是sbt 0.13.8。我查看了dockerfile reference,但无法获得足够的洞察力来满足我的需求。演示将非常有用如果您的意思是编写一个Dockerfile,生成一个能够运行sbt项目的图像,您可以查看: Java 7上的Sbt # #网址:https://github.com/William-Yeh/docker-sbt # #@见http://www.scala-sbt.org/release/tutori

我想在不使用任何sbt插件的情况下手动编写dockerfile
我使用的是sbt 0.13.8。我查看了dockerfile reference,但无法获得足够的洞察力来满足我的需求。演示将非常有用

如果您的意思是编写一个Dockerfile,生成一个能够运行sbt项目的图像,您可以查看:

Java 7上的Sbt # #网址:https://github.com/William-Yeh/docker-sbt # #@见http://www.scala-sbt.org/release/tutorial/Manual-Installation.html # #版本0.7 来自williamyeh/java7 维修员叶威廉 环境SBT_版本0.13.8 ENV SBT_罐https://repo.typesafe.com/typesafe/ivy-releases/org.scala-sbt/sbt-launch/$SBT_版本/SBT-launch.jar 添加$SBT_JAR/usr/local/bin/SBT-launch.JAR 复制sbt.sh/usr/local/bin/sbt 运行echo“==>从Maven repo获取所有sbt jar…”&&\ echo“==>[注意]这可能需要几分钟!!!”&&\ sbt 卷[“/app”] WORKDIR/app #定义默认命令。 入口点[“sbt”] CMD[“--version”]
您可以查看插件生成的docker文件:。应该提高你的初步理解。对于演示,请阅读通用docker教程,它不符合您希望在其中实际运行的内容


sbt
docker:publishLocal
之后,您将在目标文件夹中获得图像名称和dockerfile。您可以使用
docker run-i MY_NAME

@oblivion运行映像。没问题。别忘了读谢谢:)嘿,我需要更多关于给定dockerfile中使用的命令的帮助。假设我有一个文件夹,工作区。然后在工作区内,我有一个名为“mydockerfile”的dockerfile和一个名为“demo”的sbt项目。在demo>src>main>scala中,我有一个可运行的对象:objectrunner扩展App{println(“Hello World”)}现在,我应该如何为dockerfile指令提供值,例如:ADD、RUN、VOLUME、WORKDIR等,然后还需要执行构建命令。那么我可以简单地使用:…Workspace$docker build@遗忘如果您的dockerfile不是dockerfile(而是mydockerfile),那么您需要使用
-f
选项:
docker build-f mydockerfile-t myimagename。
@oblivion想象您有一个全新的空文件夹。暂时把docker放在一边,您将在该文件夹中复制什么,以及将从该文件夹运行什么命令,以便sbt项目能够正确执行自身?一旦你知道了这一点,你就知道在docker镜像中添加、复制或运行什么了。@here“由于图像大小很重要,强烈建议使用ADD从远程URL获取包;您应该使用curl或wget。这样,您就可以删除提取后不再需要的文件,而不必在图像中添加其他层。”
# Sbt on Java 7
#
# URL: https://github.com/William-Yeh/docker-sbt
#
# @see http://www.scala-sbt.org/release/tutorial/Manual-Installation.html
#
# Version     0.7

FROM williamyeh/java7
MAINTAINER William Yeh <william.pjyeh@gmail.com>


ENV SBT_VERSION  0.13.8
ENV SBT_JAR      https://repo.typesafe.com/typesafe/ivy-releases/org.scala-sbt/sbt-launch/$SBT_VERSION/sbt-launch.jar


ADD  $SBT_JAR  /usr/local/bin/sbt-launch.jar  
COPY sbt.sh    /usr/local/bin/sbt

RUN echo "==> fetch all sbt jars from Maven repo..."       && \
    echo "==> [CAUTION] this may take several minutes!!!"  && \
    sbt


VOLUME [ "/app" ]
WORKDIR /app


# Define default command.
ENTRYPOINT ["sbt"]
CMD ["--version"]