You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 11:25:26