在scala中使用docker运行测试用例 此Dockerfile有两个必需的参数来确定哪个基本映像 用于JDK和安装哪个sbt版本。
我正在尝试使用docker文件运行测试用例。docker文件是:在scala中使用docker运行测试用例 此Dockerfile有两个必需的参数来确定哪个基本映像 用于JDK和安装哪个sbt版本。,scala,docker,sbt,Scala,Docker,Sbt,我正在尝试使用docker文件运行测试用例。docker文件是: ARG OPENJDK_TAG=8u232 FROM openjdk:${OPENJDK_TAG} ARG SBT_VERSION=1.2.7 RUN \ curl -L -o sbt-$SBT_VERSION.deb https://dl.bintray.com/sbt/debian/sbt-$SBT_VERSION.deb && \ dpkg -i sbt-$SBT_VERSION.deb &
ARG OPENJDK_TAG=8u232
FROM openjdk:${OPENJDK_TAG}
ARG SBT_VERSION=1.2.7
RUN \
curl -L -o sbt-$SBT_VERSION.deb https://dl.bintray.com/sbt/debian/sbt-$SBT_VERSION.deb && \
dpkg -i sbt-$SBT_VERSION.deb && \
rm sbt-$SBT_VERSION.deb && \
apt-get update && \
apt-get install sbt && \
sbt sbtVersion
WORKDIR /current
RUN sbt clean test
ENTRYPOINT sbt "~reStart --url ${URL}"
它启动容器,但不执行测试用例。是否有任何方法可以使用此docker文件使用sbt clean test运行测试用例。您正在告诉sbt使用
run
运行测试,这是在构建映像时执行的。此时,内部图像无法访问外部图像,sbt只能看到空项目
test
应该在启动docker映像时进行,类似于重启
,因为此时您可以将卷装载到sbt项目根目录,sbt内部容器将使用该项目来构建项目(存储在容器外部)。我个人建议
ENTRYPOINT sbt
CMD ["clean", "test", "~reStart --url ${URL}"]
这将允许使用不同的参数运行docker映像
docker start sbt-image // run sbt clean test "~reStart --url ${URL}"
docker start sbt-image shell // run sbt shell
docker start sbt-image clean test // run sbt clean test
或者,如果您确实希望每次启动容器时都运行此清理测试
ENTRYPOINT sbt clean test
CMD ["~reStart --url ${URL}"]
您告诉sbt使用run
运行测试,这是在构建映像时在上执行的。此时,内部图像无法访问外部图像,sbt只能看到空项目
test
应该在启动docker映像时进行,类似于重启
,因为此时您可以将卷装载到sbt项目根目录,sbt内部容器将使用该项目来构建项目(存储在容器外部)。我个人建议
ENTRYPOINT sbt
CMD ["clean", "test", "~reStart --url ${URL}"]
这将允许使用不同的参数运行docker映像
docker start sbt-image // run sbt clean test "~reStart --url ${URL}"
docker start sbt-image shell // run sbt shell
docker start sbt-image clean test // run sbt clean test
或者,如果您确实希望每次启动容器时都运行此清理测试
ENTRYPOINT sbt clean test
CMD ["~reStart --url ${URL}"]
您的Dockerfile没有复制您的应用程序代码,因此我希望运行sbt…
行因缺少build.sbt
文件而失败。为什么要在Docker映像构建阶段运行此操作,而不是在构建映像之前从主机运行sbt test
?Docker文件不会复制应用程序代码,因此我预计run sbt…
行会因缺少build.sbt
文件而失败。为什么在Docker映像构建阶段运行此操作,而不是在构建映像之前从主机运行sbt test
?