首页 > 解决方案 > Docker 构建:无法为 openjdk 获取 oauth 令牌?

问题描述

尝试在 Docker 中构建项目时,我无法理解此错误:

> [internal] load metadata for docker.io/library/openjdk:11:
------
failed to solve with frontend dockerfile.v0: failed to create LLB definition: failed to authorize: rpc error: code = Unknown desc = failed to fetch oauth token: unexpected status: 401 Unauthorized'

这个错误到底是什么意思?我缺少权限吗?

作为参考,这是我的 Dockerfile 的样子:

### base jdk image ###
FROM openjdk:11 as setup
ENV USER sc_user
ENV HOME /home/$USER
ENV REPO $HOME/sc
RUN useradd -u 9999 $USER
COPY --chown=$USER build.gradle gradlew $REPO/
COPY --chown=$USER gradle $REPO/gradle
USER $USER
WORKDIR $REPO
RUN ./gradlew

FROM setup as tdd
ENTRYPOINT ["./gradlew", "-t", "test"]

FROM setup as debug-tdd
ENTRYPOINT ["./gradlew", "-t", "test", "-PjvmArgs=-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=*:5005"]

### build jar ###
FROM setup as build
COPY --chown=$USER src $REPO/src
RUN ./gradlew clean test build generatePomFileForMavenJavaPublication

标签: dockerdockerfile

解决方案


看起来您在 docker 配置中启用了 buildkit。Buildkit 还不稳定,可能会导致这些类型的问题。请在禁用 buildkit 的情况下重试。

在 Linux 中,使用环境变量:

export DOCKER_BUILDKIT=0
export COMPOSE_DOCKER_CLI_BUILD=0

在 Windows 和 macOS 中,启动 Docker 桌面应用程序,转到Settings,选择 Docker Engine并查找现有条目:

"buildkit": true

更改此条目以禁用 buildkit:

"buildkit": false

然后单击应用并重新启动并重试。


推荐阅读