首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将游戏应用程序文档化-下载互联网

将游戏应用程序文档化-下载互联网
EN

Stack Overflow用户
提问于 2019-01-17 22:42:29
回答 1查看 706关注 0票数 0

我正在尝试修改一个Java应用程序,我以前曾将它直接部署在服务器上。基本上,我们在服务器上有了回购的副本,并运行了以下两个步骤,用于离职(在更新了回购之后):

代码语言:javascript
复制
./bin/activator clean stage
./target/universal/stage/bin/app-server -J-Xms128M -J-Xmx512m -J-server -Dconfig.resource=application.conf

当我修改应用程序时,我基本上是这样做的:

代码语言:javascript
复制
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几乎可以下载互联网:

代码语言:javascript
复制
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)

为了克服这个问题,我创建了一个基本的形象,我同意这是一个烂摊子(从不同的博客/帖子中混在一起):

代码语言:javascript
复制
FROM ubuntu:16.04

ENV DEBIAN_FRONTEND noninteractive
ENV JAVA_HOME       /usr/lib/jvm/java-8-oracle
ENV LANG            en_US.UTF-8
ENV LC_ALL          en_US.UTF-8

RUN apt-get update && \
  apt-get install -y --no-install-recommends locales unzip && \
  locale-gen en_US.UTF-8 && \
  apt-get dist-upgrade -y && \
  apt-get --purge remove openjdk* && \
  echo "oracle-java8-installer shared/accepted-oracle-license-v1-1 select true" | debconf-set-selections && \
  echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main" > /etc/apt/sources.list.d/webupd8team-java-trusty.list && \
  apt-key adv --keyserver keyserver.ubuntu.com --recv-keys EEA14886 && \
  apt-get update && \
  apt-get install -y --no-install-recommends oracle-java8-installer oracle-java8-set-default && \
  apt-get clean all

RUN apt-get install -y curl && \
    curl -OL https://github.com/google/protobuf/releases/download/v3.2.0/protoc-3.2.0-linux-x86_64.zip && \
    unzip protoc-3.2.0-linux-x86_64.zip -d protoc3 && \
    mv protoc3/bin/* /usr/local/bin/ && \
    mv protoc3/include/* /usr/local/include/

RUN wget http://downloads.typesafe.com/typesafe-activator/1.3.2/typesafe-activator-1.3.2-minimal.zip && \
    unzip typesafe-activator-1.3.2-minimal.zip && \
    mv activator-1.3.2-minimal /bin/activator

然而,即使我使用基本映像,/bin/activator clean stage步骤也会再次下载所有的jars。虽然整个过程工作,它需要20分钟左右的码头形象建设,这是非常缓慢的。

如何加快或改进应用程序映像构建所需的时间?

EN

回答 1

Stack Overflow用户

发布于 2019-02-07 09:16:15

从您的cli输出中,我猜您使用的是Play Framework的2.3版本。在其他版本中,所显示的命令可能有所不同。

您正在构建您的应用程序完全在您的新的对接容器。因为一个空映像不包含任何依赖项,所以它必须下载它们。

一个更好的选择是在您的开发机器上构建一个独立版本的应用程序(播放框架文档:创建应用程序的独立版本) -在这个版本中,所有依赖项都已经通过

代码语言:javascript
复制
activator dist

代码语言:javascript
复制
activator universal:package-zip-tarball

这些命令生成应用程序的.zip.tgz文件,并绑定所有依赖项。

然后,您可以将它们复制到Docker容器中,解压缩它们并启动应用程序,而不必下载所有依赖项。

如果使用.tgz打包,则可以通过以下方法复制,将存档解压缩到您的停靠容器中

代码语言:javascript
复制
ADD app-server.tgs $HOME

在你的文件里。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54245330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档