使用Docker构建Play Scala项目遇依赖下载错误,求排查是网络还是Dockerfile问题
解决方案:Docker构建Play Scala项目依赖下载失败问题
从错误日志来看,问题包含两个核心原因:SSL握手失败(网络/证书问题)以及部分sbt插件依赖无法在默认仓库找到。以下是针对性的解决步骤:
1. 修复网络与证书问题
- 安装缺失的根证书:openjdk:11基础镜像可能缺少部分SSL根证书,导致握手失败,在Dockerfile中添加:
RUN apt-get update && apt-get install -y --no-install-recommends ca-certificates && rm -rf /var/lib/apt/lists/* - 构建时使用代理(针对国内网络环境):
docker build --build-arg HTTP_PROXY=http://your-proxy:port --build-arg HTTPS_PROXY=http://your-proxy:port . -f Dockerfile
2. 优化Dockerfile,避免重复操作
替换手动下载sbt的步骤,使用预配置的sbt镜像,减少环境配置问题:
FROM hseeberger/scala-sbt:11.0.12_1.5.2_2.12.14 ENV TZ=America/Los_Angeles RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone ENV HULU_ENV=staging # 先复制sbt配置文件,利用Docker缓存 COPY project/ /play-samples-play-scala-hello-world-tutorial/project/ COPY build.sbt /play-samples-play-scala-hello-world-tutorial/ WORKDIR /play-samples-play-scala-hello-world-tutorial # 提前下载依赖,后续代码改动不会重新下载 RUN sbt clean compile # 最后复制项目代码 COPY . /play-samples-play-scala-hello-world-tutorial RUN sbt stage
3. 配置国内镜像源加速依赖下载
在项目的project/plugins.sbt中添加国内仓库:
// 添加阿里云镜像源 resolvers += "Aliyun Maven Public" at "https://maven.aliyun.com/repository/public" resolvers += "Aliyun Ivy Releases" at "https://maven.aliyun.com/repository/ivy-releases" resolvers += "Aliyun SBT Plugins" at "https://maven.aliyun.com/repository/sbt-plugin" // 保持原有插件配置 addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.8.19")
4. 调整插件版本兼容性
错误中提到的sbt-giter8-scaffold:0.11.0与sbt 1.5.2可能存在兼容性问题,建议升级插件版本到0.13.1(在project/plugins.sbt中修改):
addSbtPlugin("org.foundweekends.giter8" % "sbt-giter8-scaffold" % "0.13.1")
内容的提问来源于stack exchange,提问作者Xing Liu
相关产品推荐
相关产品推荐

