scala - 在Scala中使用Docker运行测试用例

标签 scala docker sbt

该Dockerfile具有两个必需的ARG来确定哪个基本镜像

用于JDK以及要安装的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 && \
  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应该与reStart类似地在您对docker镜像进行start的那一刻发生,因为此时您可以将卷装载到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

或者如果您确实希望每次启动容器时都运行此clean test
ENTRYPOINT sbt clean test
CMD ["~reStart --url ${URL}"]

关于scala - 在Scala中使用Docker运行测试用例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61913828/

相关文章:

file - 在 Scala 中查找与通配符字符串匹配的文件

scala - 如何在 Scala JLine 的调用之间保存和加载历史记录

docker - 无法通过SSH(Azure DevOps)访问docker

curl - Docker:无法打开端口 8080

docker - 如何在读取模式下在几个Docker容器之间正确共享文件夹?

scala - 为什么 crossScalaVersion 不是 scalaVersion?

scala - 意外的特质行为

eclipse - 如何在 Eclipse 中禁用 Scala 断言?

scala - SBT:跨平台的方式来设置java.library.path吗?

scala - Scala SBT-修改输出以提供更多信息