Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在scala中使用docker运行测试用例 此Dockerfile有两个必需的参数来确定哪个基本映像 用于JDK和安装哪个sbt版本。_Scala_Docker_Sbt - Fatal编程技术网

在scala中使用docker运行测试用例 此Dockerfile有两个必需的参数来确定哪个基本映像 用于JDK和安装哪个sbt版本。

在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 &

我正在尝试使用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 && \
  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