在Docker容器中安装运行sbt时Bintray返回403错误该如何处理?
问题根因
- 用到的
dl.bintray.com是JFrog已在2021年全面下线的旧托管服务,所有旧资源下载地址统一返回403错误,不属于Bintray服务故障,是源地址过期导致的问题。 - 原Dockerfile中用到的
repo.typesafe.com的ivy源也早已停止维护,后续访问同样会报错。
修复方案
第一步:替换sbt安装源
将原Dockerfile中安装sbt的相关代码全部替换为官方维护的rpm源安装逻辑,同时修复CentOS 8已停止服务导致的默认yum源失效问题,修改后的完整Dockerfile参考如下:
FROM centos:centos8 # 修复CentOS8 EOL后的yum源问题 RUN sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-* RUN sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-* ENV SCALA_VERSION 2.13.1 ENV SBT_VERSION 1.5.2 RUN yum install -y epel-release RUN yum update -y && yum install -y wget curl # 安装JAVA RUN yum install -y java-11-openjdk # 安装SBT RUN curl -L https://www.scala-sbt.org/sbt-rpm.repo > /etc/yum.repos.d/sbt-rpm.repo RUN yum install -y sbt-${SBT_VERSION} WORKDIR /root EXPOSE 8080 # 必须先复制本地项目代码到容器工作目录,否则sbt compile会因找不到项目配置报错 COPY . . RUN sbt compile CMD sbt run
第二步:可选优化
如果不需要绑定CentOS系统,可以直接使用官方预构建的sbt镜像作为基础镜像,无需自行安装Java和sbt,大幅简化Dockerfile逻辑:
FROM sbtscala/scala-sbt:eclipse-temurin-11_1.9.7_2.13.12 WORKDIR /root EXPOSE 8080 COPY . . RUN sbt compile CMD sbt run
内容的提问来源于stack exchange,提问作者osumatu
相关产品推荐
相关产品推荐

