该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/