Dockerfile为sbt(scala)

在scala应用程序中,我使用Dockerfile(我需要Dockerfile而不是本地包装程序自动生成中心docker工具)。

FROM openjdk:8-jre-alpine ENV SBT_VERSION 0.13.15 RUN apk add --no-cache bash curl openrc git && \ curl -sL "http://dl.bintray.com/sbt/native-packages/sbt/$SBT_VERSION/sbt-$SBT_VERSION.tgz" | gunzip | tar -x -C /usr/local && \ ln -s /usr/local/sbt/bin/sbt /usr/local/bin/sbt && \ chmod 0755 /usr/local/bin/sbt && \ apk add --no-cache --repository http://dl-cdn.alpinelinux.org/alpine/edge/main --repository http://dl-cdn.alpinelinux.org/alpine/edge/community docker RUN rc-update add docker RUN sbt sbtVersion COPY . /tmp WORKDIR /tmp RUN sbt stage RUN chmod +x runAfterTime.sh ENTRYPOINT [ "./runAfterTime.sh" ] 

但需要这么多时间,每次更换下载一半的互联网。 这可以轻松加快吗?

编辑:我也使用“hackaround”,docker文件:

 FROM openjdk:8-jre-alpine ENV SBT_VERSION 0.13.15 RUN apk add --no-cache bash curl openrc git && \ apk add --no-cache --repository http://dl-cdn.alpinelinux.org/alpine/edge/main --repository http://dl-cdn.alpinelinux.org/alpine/edge/community docker RUN rc-update add docker COPY target /tmp/target COPY runAfterTime.sh /tmp WORKDIR /tmp RUN chmod +x runAfterTime.sh ENTRYPOINT [ "./runAfterTime.sh" ] 

所以build立是从机器,使用sbtcaching完成,这样我可以更快地build立图像,并推到docker集线器,但将不胜感激,使用sbtcaching..

好的,我发现这个简单的解决scheme。 所以首先是要下载所有的代表权? caching当前阶段。 我们可以通过只添加build.sbt和plugins.sbt来实现,运行sbt reload&update。 然后添加src文件,所以更改src不会从头开始运行。 这里是做dockerfile:

 FROM openjdk:8-jre-alpine ENV SBT_VERSION 0.13.15 RUN apk add --no-cache bash curl openrc git && \ curl -sL "http://dl.bintray.com/sbt/native-packages/sbt/$SBT_VERSION/sbt-$SBT_VERSION.tgz" | gunzip | tar -x -C /usr/local && \ ln -s /usr/local/sbt/bin/sbt /usr/local/bin/sbt && \ chmod 0755 /usr/local/bin/sbt && \ apk add --no-cache --repository http://dl-cdn.alpinelinux.org/alpine/edge/main --repository http://dl-cdn.alpinelinux.org/alpine/edge/community docker RUN rc-update add docker ADD build.sbt /tmp RUN mkdir -p /tmp/project ADD project/Commons.scala /tmp/project ADD project/plugins.sbt /tmp/project ADD project/build.properties /tmp/project WORKDIR /tmp RUN sbt reload RUN sbt update ADD src /tmp ADD runAfterTime.sh /tmp RUN sbt stage RUN chmod +x runAfterTime.sh ENTRYPOINT [ "./runAfterTime.sh" ]