Java 停靠播放应用程序-下载互联网
我正在尝试对一个Java应用程序进行dockerize,我以前在服务器上直接部署该应用程序。基本上,我们在服务器上有一个repo的副本,并运行以下两个步骤进行部署(在更新repo之后): 当我将应用程序归档时,我基本上是这样做的:Java 停靠播放应用程序-下载互联网,java,docker,playframework,Java,Docker,Playframework,我正在尝试对一个Java应用程序进行dockerize,我以前在服务器上直接部署该应用程序。基本上,我们在服务器上有一个repo的副本,并运行以下两个步骤进行部署(在更新repo之后): 当我将应用程序归档时,我基本上是这样做的: FROM ubuntu:latest RUN mkdir home/app-server ENV HOME=home/app-server COPY . $HOME WORKDIR $HOME RUN ./bin/activator clean stage
FROM ubuntu:latest
RUN mkdir home/app-server
ENV HOME=home/app-server
COPY . $HOME
WORKDIR $HOME
RUN ./bin/activator clean stage #this is inside the $HOME directory
EXPOSE 5000
CMD ["./target/universal/stage/bin/app-server", "-J-Xms128M", "-J-Xmx512m", "-J-server", "-Dhttp.port=5000", "-Dconfig.resource=stage.conf"]
但是/bin/activator clean stage
几乎可以在互联网上下载:
Getting com.typesafe.activator activator-launcher 1.3.12 ...
downloading https://repo.typesafe.com/typesafe/ivy-releases/com.typesafe.activator/activator-launcher/1.3.12/jars/activator-launcher.jar ...
[SUCCESSFUL ] com.typesafe.activator#activator-launcher;1.3.12!activator-launcher.jar (1460ms)
downloading https://repo1.maven.org/maven2/org/scala-lang/scala-library/2.11.8/scala-library-2.11.8.jar ...
[SUCCESSFUL ] org.scala-lang#scala-library;2.11.8!scala-library.jar (310ms)
为了解决这个问题,我创建了一个基础图像,我同意这是一个混乱(从各种博客/SO帖子中散列在一起):
但是,即使我使用基本映像,/bin/activator clean stage
步骤也会再次下载所有jar。虽然整个过程都在进行中,但构建docker图像大约需要20分钟,这非常缓慢
如何加快或改进按应用程序映像构建所需的时间?从您的cli输出,我猜您使用的是Play Framework的2.3版。显示的命令在其他版本中可能有所不同 您正在完全在新的docker容器中构建应用程序。由于空映像不包含任何依赖项,因此必须下载所有依赖项 一个更好的选择是在开发机器上构建独立版本的应用程序(),其中所有依赖项都已下载
activator dist
或
activator universal:package-zip-tarball
这些命令生成应用程序的.zip
或.tgz
文件,并捆绑所有依赖项
然后,您可以将它们复制到Docker容器中,解压缩它们并启动应用程序,而无需下载所有依赖项
如果使用.tgz
打包,您可以使用
ADD app-server.tgs $HOME
在Dockerfile中。从cli输出中,我猜您使用的是Play Framework的2.3版。显示的命令在其他版本中可能有所不同 您正在完全在新的docker容器中构建应用程序。由于空映像不包含任何依赖项,因此必须下载所有依赖项 一个更好的选择是在开发机器上构建独立版本的应用程序(),其中所有依赖项都已下载
activator dist
或
activator universal:package-zip-tarball
这些命令生成应用程序的.zip
或.tgz
文件,并捆绑所有依赖项
然后,您可以将它们复制到Docker容器中,解压缩它们并启动应用程序,而无需下载所有依赖项
如果使用.tgz
打包,您可以使用
ADD app-server.tgs $HOME
在您的Dockerfile中
ADD app-server.tgs $HOME