在scala应用程序中,我正在使用Dockerfile (我需要Dockerfile而不是本地打包程序来自动化hub 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“,dockerfile:
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" ]所以构建是从机器上完成的,使用sbt缓存,这样我可以更快地构建映像并推送到docker集线器,但如果能以某种方式加快速度,使用sbt缓存会更好。
发布于 2017-08-25 01:10:12
好的,我找到了一个简单的解决方案。所以首先是下载所有的副手,对吗?缓存当前阶段。这可以通过添加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" ]https://stackoverflow.com/questions/45844314
复制相似问题