Я пытаюсь докеризировать Java-приложение, которое ранее использовал для непосредственного развертывания на сервере. По сути, у нас была копия репо на сервере, и мы выполнили эти два шага для развёртывания (после того, как мы обновили репо):
./bin/activator clean stage
./target/universal/stage/bin/app-server -J-Xms128M -J-Xmx512m -J-server -Dconfig.resource=application.conf
Когда я докеризировал приложение, я в основном делал это:
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):
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
снова загружает все банки. Хотя весь процесс работает, для создания образа докера требуется около 20 минут, что очень медленно.
Как можно ускорить или улучшить время, необходимое для создания образа приложения?