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

使用openjdk:17构建Docker容器时出现apt-get命令未找到错误

解决/bin/sh: apt-get: command not found错误

问题根源:openjdk:17官方默认镜像基于Alpine Linux,该发行版使用apk作为包管理器,而非Debian/Ubuntu系的apt-get。你之前用的adoptopenjdk:11-jdk是基于Debian构建的,所以能正常使用apt-get。

提供两种解决方式:

方式一:切换到Debian基础的OpenJDK镜像

将Dockerfile中的openjdk:17替换为基于Debian的OpenJDK镜像标签,比如openjdk:17-jdk或openjdk:17-slim,这样就能继续使用apt-get命令。

修改后的Dockerfile示例:

FROM openjdk:17-jdk as builder
WORKDIR application
ARG JAR_FILE=backend/build/libs/backend-*.jar
COPY ${JAR_FILE} application.jar
RUN java -Djarmode=layertools -jar application.jar extract

FROM openjdk:17-jdk as runtime
WORKDIR application
RUN apt-get -y update && apt-get -y install fontconfig ttf-dejavu
COPY --from=builder application/dependencies/ ./
COPY --from=builder application/spring-boot-loader/ ./
COPY --from=builder application/application/ ./

EXPOSE 8080
ENV _JAVA_OPTIONS "-Djava.security.egd=file:/dev/./urandom -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Duser.timezone=GMT -Xverify:none -Djava.util.concurrent.ForkJoinPool.common.parallelism=16"
ENTRYPOINT ["java", "-cp",".:BOOT-INF/lib/*:BOOT-INF/classes:/META-INF", "org.springframework.boot.loader.JarLauncher"]

方式二:使用Alpine的apk包管理器

如果坚持使用openjdk:17镜像,将apt-get相关命令替换为Alpine的apk命令:

修改runtime阶段的RUN指令:

RUN apk add --no-cache fontconfig ttf-dejavu

--no-cache参数能避免缓存包索引,减少镜像体积。

修改后的完整Dockerfile示例:

FROM openjdk:17 as builder
WORKDIR application
ARG JAR_FILE=backend/build/libs/backend-*.jar
COPY ${JAR_FILE} application.jar
RUN java -Djarmode=layertools -jar application.jar extract

FROM openjdk:17 as runtime
WORKDIR application
RUN apk add --no-cache fontconfig ttf-dejavu
COPY --from=builder application/dependencies/ ./
COPY --from=builder application/spring-boot-loader/ ./
COPY --from=builder application/application/ ./

EXPOSE 8080
ENV _JAVA_OPTIONS "-Djava.security.egd=file:/dev/./urandom -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Duser.timezone=GMT -Xverify:none -Djava.util.concurrent.ForkJoinPool.common.parallelism=16"
ENTRYPOINT ["java", "-cp",".:BOOT-INF/lib/*:BOOT-INF/classes:/META-INF", "org.springframework.boot.loader.JarLauncher"]

内容的提问来源于stack exchange,提问作者StefanoSKAL

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 03:10:06