首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于sbt的Dockerfile ( scala )

用于sbt的Dockerfile ( scala )
EN

Stack Overflow用户
提问于 2017-08-23 23:51:06
回答 1查看 2.1K关注 0票数 3

在scala应用程序中,我正在使用Dockerfile (我需要Dockerfile而不是本地打包程序来自动化hub docker中的构建)。

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

代码语言:javascript
复制
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缓存会更好。

EN

回答 1

Stack Overflow用户

发布于 2017-08-25 01:10:12

好的,我找到了一个简单的解决方案。所以首先是下载所有的副手,对吗?缓存当前阶段。这可以通过添加build.sbt和plugins.sbt,运行sbt reload & update来实现。然后添加src文件,这样src中的更改不会从头开始运行所有内容。这里完成了dockerfile:

代码语言:javascript
复制
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" ]
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45844314

复制
相关文章

相似问题

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