基于Alpine构建的java8 docker镜像出现验证码不显示错误

基于Alpine构建的java8 docker镜像运行后验证码不显示,并出现如下错误:

Error loading shared library libgcc_s.so.1: No such file or directory

是因为Alpine比较精简,默认没有 libgcc。安装上即可

apk add libgcc

 完整的Dockerfile如下:

FROM alpine:3.21

ENV JAVA_HOME=/opt/java/openjdk
ENV PATH=$JAVA_HOME/bin:$PATH

# 默认utf-8编码及中国时区
ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8' TZ='Asia/Shanghai'

RUN set -eux; \
    ln -snf /usr/share/zoneinfo/${TZ} /etc/localtime && \
    echo ${TZ} > /etc/timezone && \
    echo https://mirrors.ustc.edu.cn/alpine/v3.21/main > /etc/apk/repositories && \
    echo https://mirrors.ustc.edu.cn/alpine/v3.21/community >> /etc/apk/repositories && \
    apk update && apk upgrade && \
    apk add --no-cache \
    # 解决验证码不显示问题
    fontconfig ttf-dejavu libgcc \
    # gnupg required to verify the signature
    gnupg \
    # utilities for keeping Alpine and OpenJDK CA certificates in sync
    # https://github.com/adoptium/containers/issues/293
    ca-certificates p11-kit-trust \
    # locales ensures proper character encoding and locale-specific behaviors using en_US.UTF-8
    musl-locales musl-locales-lang \
    tzdata \
    # Contains `csplit` used for splitting multiple certificates in one file to multiple files, since keytool can
    # only import one at a time.
    coreutils \
    # Needed to extract CN and generate aliases for certificates
    openssl \
    ; \
    rm -rf /var/cache/apk/*

ENV JAVA_VERSION=jdk8u442-b06

RUN set -eux; \
    ARCH="$(apk --print-arch)"; \
    case "${ARCH}" in \
    x86_64) \
    ESUM='4fb0636534b0cd4534a3cdcbbe7cf2e937523d6376d9cef00cc6cfd5d19537e8'; \
    BINARY_URL='https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u442-b06/OpenJDK8U-jre_x64_alpine-linux_hotspot_8u442b06.tar.gz'; \
    ;; \
    *) \
    echo "Unsupported arch: ${ARCH}"; \
    exit 1; \
    ;; \
    esac; \
    #用wget下载而不是自己先下载到本地然后用COPY ADD命令的原因是:COPY ADD会增加镜像大小,wget不会增加镜像大小
    wget -O /tmp/openjdk.tar.gz ${BINARY_URL}; \
    wget -O /tmp/openjdk.tar.gz.sig ${BINARY_URL}.sig; \
    export GNUPGHOME="$(mktemp -d)"; \
    # gpg: key 843C48A565F8F04B: "Adoptium GPG Key (DEB/RPM Signing Key) <temurin-dev@eclipse.org>" imported
    gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 3B04D753C9050D9A5D343F39843C48A565F8F04B; \
    gpg --batch --verify /tmp/openjdk.tar.gz.sig /tmp/openjdk.tar.gz; \
    rm -rf "${GNUPGHOME}" /tmp/openjdk.tar.gz.sig; \
    echo "${ESUM} */tmp/openjdk.tar.gz" | sha256sum -c -; \
    mkdir -p "$JAVA_HOME"; \
    tar --extract \
    --file /tmp/openjdk.tar.gz \
    --directory "$JAVA_HOME" \
    --strip-components 1 \
    --no-same-owner \
    ; \
    rm -f /tmp/openjdk.tar.gz;

RUN set -eux; \
    echo "Verifying install ..."; \
    echo "java -version"; java -version; \
    echo "Complete."
COPY --chmod=755 entrypoint.sh /__cacert_entrypoint.sh
ENTRYPOINT ["/__cacert_entrypoint.sh"]

构建好的镜像地址:

- docker

docker pull quay.io/rzorzo/java8

 - podman

podman pull quay.io/rzorzo/java8

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值