docker.io/vegardit/graalvm-maven:latest-java17 linux/amd64

docker.io/vegardit/graalvm-maven:latest-java17 - 国内下载镜像源 浏览次数:6

温馨提示:此镜像为latest tag镜像,本站无法保证此版本为最新镜像

这是一个包含 GraalVM 和 Maven 的 Docker 镜像。它预先配置好了 GraalVM,方便开发者使用 Maven 构建 Java 应用,并利用 GraalVM 的特性进行原生镜像编译,生成更高效的执行文件。

源镜像 docker.io/vegardit/graalvm-maven:latest-java17
国内镜像 swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/vegardit/graalvm-maven:latest-java17
镜像ID sha256:a557622a38729c5605ac88b179a58c1a0290aba1ea0c0bcf9fbd9ba354179184
镜像TAG latest-java17
大小 985.15MB
镜像源 docker.io
项目信息 Docker-Hub主页 🚀项目TAG 🚀
CMD /bin/sh -c cat /opt/build_info && java --version && echo && mvn --version
启动入口
工作目录
OS/平台 linux/amd64
浏览量 6 次
贡献者
镜像创建 2025-07-02T17:20:58.405979695Z
同步时间 2025-07-07 12:29
更新时间 2025-07-07 14:47
目录挂载
/root/.m2/repository
环境变量
PATH=/opt/graalvm/bin:/opt/maven/bin:/opt/upx:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin JAVA_HOME=/opt/graalvm JAVA_MAJOR_VERSION=17 MAVEN_HOME=/opt/maven M2_HOME=/opt/maven MAVEN_CONFIG=/root/.m2 MAVEN_OPTS=-Xmx1024m -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -Dfile.encoding=UTF-8
镜像标签
Vegard IT GmbH (vegardit.com): maintainer 2025-07-02T17:19:47Z: org.opencontainers.image.created Docker image to build native Linux binaries of Java Maven projects using GraalVM native-image feature: org.opencontainers.image.description cc6ce7f: org.opencontainers.image.revision https://github.com/vegardit/docker-graalvm-maven: org.opencontainers.image.source vegardit/graalvm-maven: org.opencontainers.image.title cc6ce7f: org.opencontainers.image.version

Docker拉取命令

docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/vegardit/graalvm-maven:latest-java17
docker tag  swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/vegardit/graalvm-maven:latest-java17  docker.io/vegardit/graalvm-maven:latest-java17

Containerd拉取命令

ctr images pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/vegardit/graalvm-maven:latest-java17
ctr images tag  swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/vegardit/graalvm-maven:latest-java17  docker.io/vegardit/graalvm-maven:latest-java17

Shell快速替换命令

sed -i 's#vegardit/graalvm-maven:latest-java17#swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/vegardit/graalvm-maven:latest-java17#' deployment.yaml

Ansible快速分发-Docker

#ansible k8s -m shell -a 'docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/vegardit/graalvm-maven:latest-java17 && docker tag  swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/vegardit/graalvm-maven:latest-java17  docker.io/vegardit/graalvm-maven:latest-java17'

Ansible快速分发-Containerd

#ansible k8s -m shell -a 'ctr images pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/vegardit/graalvm-maven:latest-java17 && ctr images tag  swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/vegardit/graalvm-maven:latest-java17  docker.io/vegardit/graalvm-maven:latest-java17'

镜像构建历史


# 2025-07-03 01:20:58  0.00B 创建挂载点用于持久化数据或共享数据
VOLUME [/root/.m2/repository]
                        
# 2025-07-03 01:20:58  0.00B 设置默认要执行的命令
CMD ["/bin/sh" "-c" "cat /opt/build_info && java --version && echo && mvn --version"]
                        
# 2025-07-03 01:20:58  0.00B 设置环境变量 PATH JAVA_HOME JAVA_MAJOR_VERSION MAVEN_HOME M2_HOME MAVEN_CONFIG MAVEN_OPTS -Djava.awt.headless -Djava.net.preferIPv4Stack -Dfile.encoding
ENV PATH=/opt/graalvm/bin:/opt/maven/bin:/opt/upx:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin JAVA_HOME=/opt/graalvm JAVA_MAJOR_VERSION=17 MAVEN_HOME=/opt/maven M2_HOME=/opt/maven MAVEN_CONFIG=/root/.m2 MAVEN_OPTS=-Xmx1024m -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -Dfile.encoding=UTF-8
                        
# 2025-07-03 01:20:58  874.00B 复制新文件或目录到容器中
COPY image/toolchains.xml /root/.m2/toolchains.xml # buildkit
                        
# 2025-07-03 01:20:58  436.00B 复制新文件或目录到容器中
COPY image/settings.xml /root/.m2/settings.xml # buildkit
                        
# 2025-07-03 01:20:58  525.12MB 执行命令并创建新的镜像层
RUN |19 DEBIAN_FRONTEND=noninteractive LC_ALL=C BASE_LAYER_CACHE_KEY=20250702 GRAALVM_DOWNLOAD_URL=https://github.com/graalvm/graalvm-ce-builds/releases/download/jdk-17.0.9/graalvm-community-jdk-17.0.9_linux-{{ARCH_GRAAL}}_bin.tar.gz JAVA_MAJOR_VERSION=17 UPX_COMPRESS=true OCI_authors=Vegard IT GmbH (vegardit.com) OCI_title=vegardit/graalvm-maven OCI_description=Docker image to build native Linux binaries of Java Maven projects using GraalVM native-image feature OCI_source=https://github.com/vegardit/docker-graalvm-maven OCI_revision=cc6ce7f OCI_version=cc6ce7f OCI_created=2025-07-02T17:19:47Z GIT_BRANCH=main GIT_COMMIT_DATE=2025-05-26 20:58:35 UTC USER=user USER_HOME_DIR=/home/user UID=1000 GID=1000 /bin/bash -euo pipefail -c 
  ARCH=$(dpkg --print-architecture)

  echo "#################################################"
  echo "$ARCH based image will be created"
  echo "#################################################"

  # Function to resolve the arch ID for binary packages
  function resolve_arch() {
    local ARCH_PLACEHOLDER; ARCH_PLACEHOLDER=$1
    # strip the leading '{{ARCH_':
    APP_ID="${ARCH_PLACEHOLDER#\{\{ARCH_}"
    # strip the trailing '}}'':
    APP_ID="${APP_ID%\}\}}"

    case $ARCH in
      amd64)
        case $APP_ID in
          DOCKER_CLIENT) echo "x86_64" ;;
          GRAAL)         echo "x64" ;;
          GRAAL_DEV)     echo "amd64" ;;
          GRAAL_LEGACY)  echo "amd64" ;;
          *)             echo "amd64" ;;
        esac
        ;;
      arm64)
        case $APP_ID in
          DOCKER_CLIENT) echo "aarch64" ;;
          GRAAL)         echo "aarch64" ;;
          GRAAL_DEV)     echo "aarch64" ;;
          GRAAL_LEGACY)  echo "aarch64" ;;
          *)             echo "arm64" ;;
        esac
        ;;
      *)
        echo "Unknown architecture"
        exit 1
        ;;
    esac
  }

  echo "#################################################"
  echo "Adding default user... $USER with group $GID and home dir $USER_HOME_DIR"
  echo "#################################################"
  addgroup --gid "$GID" "$USER"
  adduser --shell /bin/bash --home "$USER_HOME_DIR" --disabled-password --gid "$GID" --uid "$UID" --gecos "" "$USER"
  chown -R "$USER:$GID" /usr/local "$USER_HOME_DIR"

  echo "#################################################"
  echo "Installing latest UPX..."
  echo "#################################################"
  mkdir /opt/upx
  if [[ -f /run/secrets/github_token ]]; then
     auth=(-H "Authorization: Bearer $(cat /run/secrets/github_token)")
  fi

  upx_download_url=$(curl -fsSL "${auth[@]:-}" https://api.github.com/repos/upx/upx/releases/latest | grep browser_download_url | grep "${ARCH}_linux.tar.xz" | cut "-d\"" -f4)

  echo "Downloading [$upx_download_url]..."
  curl -fL "$upx_download_url" | tar Jxv -C /opt/upx --strip-components=1

  echo "#################################################"
  echo "Installing GraalVM..."
  echo "#################################################"
  mkdir /opt/graalvm
  # Extract {{ARCH_xyz}} placeholder from the URL
  ARCH_PLACEHOLDER=$(echo "$GRAALVM_DOWNLOAD_URL" | grep -oE '\{\{(ARCH(_[_[:alnum:]]+)?)\}\}')
  FINAL_GRAALVM_DOWNLOAD_URL=${GRAALVM_DOWNLOAD_URL//${ARCH_PLACEHOLDER}/$(resolve_arch "$ARCH_PLACEHOLDER")}
  echo "Downloading [$FINAL_GRAALVM_DOWNLOAD_URL]..."
  curl -fL "$FINAL_GRAALVM_DOWNLOAD_URL" | \
    tar zxv -C /opt/graalvm --strip-components=1 \
      --exclude=*/bin/jvisualvm \
      --exclude=*/lib/src.zip \
      --exclude=*/lib/visualvm

  /opt/graalvm/bin/gu install native-image || true # does not exist in dev

  strip --strip-unneeded \
    /opt/graalvm/bin/unpack200 `# does not exist in Java 17+`  \
    /opt/graalvm/languages/js/bin/js \
    /opt/graalvm/languages/llvm/bin/lli `# does not exist in dev` \
    /opt/graalvm/languages/llvm/native/bin/graalvm-native-* `# does not exist in dev` \
    /opt/graalvm/lib/installer/bin/gu `# does not exist in dev` \
    /opt/graalvm/lib/svm/bin/native-image || true

  if [[ $UPX_COMPRESS == "true" ]]; then
    /opt/upx/upx -9 \
      /opt/graalvm/languages/llvm/bin/lli \
      /opt/graalvm/languages/llvm/native/bin/graalvm-native-* \
      /opt/graalvm/lib/installer/bin/gu \
      /opt/graalvm/lib/svm/bin/native-image || true
      #/opt/graalvm/bin/unpack200 \
      #/opt/graalvm/languages/js/bin/js \
  fi

  JAVA_MAJOR_VERSION=$(/opt/graalvm/bin/java -fullversion 2>&1 | sed -E -n 's/.* version "([^.-]*).*"/\1/p')
  export JAVA_MAJOR_VERSION

  echo "#################################################"
  echo "Installing latest Docker client..."
  echo "#################################################"
  docker_cli_package=$(curl -fLsS "https://download.docker.com/linux/static/stable/$(resolve_arch "{{ARCH_DOCKER_CLIENT}}")/" | grep -oP '(?<=>)docker-\d+.\d+.\d+.tgz(?=</a>)' | tail -1)
  docker_cli_download_url=https://download.docker.com/linux/static/stable/$(resolve_arch "{{ARCH_DOCKER_CLIENT}}")/$docker_cli_package
  echo "Downloading [$docker_cli_download_url]..."
  curl -fL "$docker_cli_download_url" | tar zxv -C /usr/bin --strip-components=1 docker/docker
  # this also installs docker app and docker buildx:
  #docker_cli_package=$(curl -fsSL https://download.docker.com/linux/debian/dists/bullseye/pool/stable/$ARCH/ | grep docker-ce-cli | grep buster_$ARCH | tail -1 | grep -oP '(?<=deb">).*(?=</a>)')
  #docker_cli_download_url=https://download.docker.com/linux/debian/dists/bullseye/pool/stable/$ARCH/$docker_cli_package
  #echo "Downloading [$docker_cli_download_url]..."
  #curl -fL $docker_cli_download_url -o /tmp/docker-cli.deb
  #dpkg -i /tmp/docker-cli.deb
  #rm /tmp/docker-cli.deb
  strip --strip-unneeded /usr/bin/docker
  if [[ $UPX_COMPRESS == "true" ]]; then
    /opt/upx/upx -9 /usr/bin/docker
  fi

  echo "#################################################"
  echo "Installing latest Apache Maven..."
  echo "#################################################"
  mkdir /opt/maven
  #maven_version=$(curl -fsSL https://repo1.maven.org/maven2/org/apache/maven/apache-maven/maven-metadata.xml | grep -oP '(?<=latest>).*(?=</latest)')
  maven_version=$(curl -fsSL https://repo1.maven.org/maven2/org/apache/maven/apache-maven/maven-metadata.xml | grep -Ev "alpha|beta|rc" | grep -oP '(?<=version>).*(?=</version)' | tail -n1)
  maven_download_url=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/$maven_version/apache-maven-${maven_version}-bin.tar.gz
  echo "Downloading [$maven_download_url]..."
  curl -fL "$maven_download_url" | tar zxv -C /opt/maven --strip-components=1

  echo "#################################################"
  echo "Installing bash-funk..."
  echo "#################################################"
  git clone https://github.com/vegardit/bash-funk --depth 1 --branch main --single-branch /opt/bash-funk
  # shellcheck disable=SC2028  # echo may not expand escape sequences. Use printf
  echo   "BASH_FUNK_PROMPT_PREFIX='\033[45;30m GRAALVM '" >> ~/.bashrc
  echo "source /opt/bash-funk/bash-funk.sh" >> ~/.bashrc

  echo "#################################################"
  echo "Writing build_info..."
  echo "#################################################"
  cat <<EOT >/opt/build_info
GIT_REPO:    $OCI_source
GIT_BRANCH:  $GIT_BRANCH
GIT_COMMIT:  $OCI_revision @ $GIT_COMMIT_DATE
IMAGE_BUILD: $OCI_created
EOT
  cat /opt/build_info

 # buildkit
                        
# 2025-07-03 01:20:16  0.00B 定义构建参数
ARG GID=1000
                        
# 2025-07-03 01:20:16  0.00B 定义构建参数
ARG UID=1000
                        
# 2025-07-03 01:20:16  0.00B 定义构建参数
ARG USER_HOME_DIR=/home/user
                        
# 2025-07-03 01:20:16  0.00B 定义构建参数
ARG USER=user
                        
# 2025-07-03 01:20:16  0.00B 添加元数据标签
LABEL maintainer=Vegard IT GmbH (vegardit.com)
                        
# 2025-07-03 01:20:16  0.00B 添加元数据标签
LABEL org.opencontainers.image.title=vegardit/graalvm-maven org.opencontainers.image.description=Docker image to build native Linux binaries of Java Maven projects using GraalVM native-image feature org.opencontainers.image.source=https://github.com/vegardit/docker-graalvm-maven org.opencontainers.image.revision=cc6ce7f org.opencontainers.image.version=cc6ce7f org.opencontainers.image.created=2025-07-02T17:19:47Z
                        
# 2025-07-03 01:20:16  0.00B 定义构建参数
ARG GIT_COMMIT_DATE=2025-05-26 20:58:35 UTC
                        
# 2025-07-03 01:20:16  0.00B 定义构建参数
ARG GIT_BRANCH=main
                        
# 2025-07-03 01:20:16  0.00B 定义构建参数
ARG OCI_created=2025-07-02T17:19:47Z
                        
# 2025-07-03 01:20:16  0.00B 定义构建参数
ARG OCI_version=cc6ce7f
                        
# 2025-07-03 01:20:16  0.00B 定义构建参数
ARG OCI_revision=cc6ce7f
                        
# 2025-07-03 01:20:16  0.00B 定义构建参数
ARG OCI_source=https://github.com/vegardit/docker-graalvm-maven
                        
# 2025-07-03 01:20:16  0.00B 定义构建参数
ARG OCI_description=Docker image to build native Linux binaries of Java Maven projects using GraalVM native-image feature
                        
# 2025-07-03 01:20:16  0.00B 定义构建参数
ARG OCI_title=vegardit/graalvm-maven
                        
# 2025-07-03 01:20:16  0.00B 定义构建参数
ARG OCI_authors=Vegard IT GmbH (vegardit.com)
                        
# 2025-07-03 01:20:16  0.00B 定义构建参数
ARG UPX_COMPRESS=true
                        
# 2025-07-03 01:20:16  0.00B 定义构建参数
ARG JAVA_MAJOR_VERSION=17
                        
# 2025-07-03 01:20:16  0.00B 定义构建参数
ARG GRAALVM_DOWNLOAD_URL=https://github.com/graalvm/graalvm-ce-builds/releases/download/jdk-17.0.9/graalvm-community-jdk-17.0.9_linux-{{ARCH_GRAAL}}_bin.tar.gz
                        
# 2025-07-03 01:20:16  385.22MB 执行命令并创建新的镜像层
RUN |3 DEBIAN_FRONTEND=noninteractive LC_ALL=C BASE_LAYER_CACHE_KEY=20250702 /bin/bash -euo pipefail -c   /mnt/shared/cmd/debian-install-os-updates.sh

  echo "#################################################"
  echo "Installing tools..."
  echo "#################################################"
  apt-get install --no-install-recommends -y bc ca-certificates curl git htop jq less mc procps vim xz-utils openssh-client
  echo -e "set ignorecase
set showmatch
set novisualbell
set noerrorbells
syntax enable
set mouse-=a" > ~/.vimrc

  echo "#################################################"
  echo "Installing packages required by GraalVM..."
  echo "#################################################"
  apt-get install --no-install-recommends -y gcc libstdc++-11-dev libz-dev

  /mnt/shared/cmd/debian-cleanup.sh

 # buildkit
                        
# 2025-07-03 01:20:16  0.00B 定义构建参数
ARG BASE_LAYER_CACHE_KEY=20250702
                        
# 2025-07-03 01:20:16  0.00B 指定运行容器时使用的用户
USER root
                        
# 2025-07-03 01:20:16  0.00B 
SHELL [/bin/bash -euo pipefail -c]
                        
# 2025-07-03 01:20:16  0.00B 定义构建参数
ARG LC_ALL=C
                        
# 2025-07-03 01:20:16  0.00B 定义构建参数
ARG DEBIAN_FRONTEND=noninteractive
                        
# 2025-06-30 08:00:00  74.81MB 
# debian.sh --arch 'amd64' out/ 'stable' '@1751241600'
                        
                    

镜像信息

{
    "Id": "sha256:a557622a38729c5605ac88b179a58c1a0290aba1ea0c0bcf9fbd9ba354179184",
    "RepoTags": [
        "vegardit/graalvm-maven:latest-java17",
        "swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/vegardit/graalvm-maven:latest-java17"
    ],
    "RepoDigests": [
        "vegardit/graalvm-maven@sha256:ef3ed8c5fe60f6147657ac909303ef67403c35ee1e83b8e72455b540c527a288",
        "swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/vegardit/graalvm-maven@sha256:ae6824a5fbeaeff08630b6754d8243f45e09bb2eb166b7ca23ef0100eacdd74d"
    ],
    "Parent": "",
    "Comment": "buildkit.dockerfile.v0",
    "Created": "2025-07-02T17:20:58.405979695Z",
    "Container": "",
    "ContainerConfig": null,
    "DockerVersion": "",
    "Author": "",
    "Config": {
        "Hostname": "",
        "Domainname": "",
        "User": "root",
        "AttachStdin": false,
        "AttachStdout": false,
        "AttachStderr": false,
        "Tty": false,
        "OpenStdin": false,
        "StdinOnce": false,
        "Env": [
            "PATH=/opt/graalvm/bin:/opt/maven/bin:/opt/upx:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
            "JAVA_HOME=/opt/graalvm",
            "JAVA_MAJOR_VERSION=17",
            "MAVEN_HOME=/opt/maven",
            "M2_HOME=/opt/maven",
            "MAVEN_CONFIG=/root/.m2",
            "MAVEN_OPTS=-Xmx1024m -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -Dfile.encoding=UTF-8"
        ],
        "Cmd": [
            "/bin/sh",
            "-c",
            "cat /opt/build_info \u0026\u0026 java --version \u0026\u0026 echo \u0026\u0026 mvn --version"
        ],
        "ArgsEscaped": true,
        "Image": "",
        "Volumes": {
            "/root/.m2/repository": {}
        },
        "WorkingDir": "",
        "Entrypoint": null,
        "OnBuild": null,
        "Labels": {
            "maintainer": "Vegard IT GmbH (vegardit.com)",
            "org.opencontainers.image.created": "2025-07-02T17:19:47Z",
            "org.opencontainers.image.description": "Docker image to build native Linux binaries of Java Maven projects using GraalVM native-image feature",
            "org.opencontainers.image.revision": "cc6ce7f",
            "org.opencontainers.image.source": "https://github.com/vegardit/docker-graalvm-maven",
            "org.opencontainers.image.title": "vegardit/graalvm-maven",
            "org.opencontainers.image.version": "cc6ce7f"
        },
        "Shell": [
            "/bin/bash",
            "-euo",
            "pipefail",
            "-c"
        ]
    },
    "Architecture": "amd64",
    "Os": "linux",
    "Size": 985146596,
    "GraphDriver": {
        "Data": {
            "LowerDir": "/var/lib/docker/overlay2/e9d62a3befe4e1e2fa7937ea6b7fea20428e746726494923ff0ae9d011a937bd/diff:/var/lib/docker/overlay2/129c2c42a54a84ef54cf4dbc6d8dde15da0d5db00839565cd815ab2e5538a7eb/diff:/var/lib/docker/overlay2/f78fc6b9c84ab71d9db5fe96af0b0ee8a5268c09dcc60199a202db0fba984720/diff:/var/lib/docker/overlay2/b442e8ab3d67aade21bcf998ebbe734975c9d99d9cef8c711633db2f78ce079d/diff",
            "MergedDir": "/var/lib/docker/overlay2/fc2f9f88c3e075ced87a55aaa08eb24186da6cfdff6cf5b89c74a4bd82a212a0/merged",
            "UpperDir": "/var/lib/docker/overlay2/fc2f9f88c3e075ced87a55aaa08eb24186da6cfdff6cf5b89c74a4bd82a212a0/diff",
            "WorkDir": "/var/lib/docker/overlay2/fc2f9f88c3e075ced87a55aaa08eb24186da6cfdff6cf5b89c74a4bd82a212a0/work"
        },
        "Name": "overlay2"
    },
    "RootFS": {
        "Type": "layers",
        "Layers": [
            "sha256:3ff3f63a5c6311f917a9e1e7cf0d6be013d3b8a07bdae5edb4a08e0c32d33c4a",
            "sha256:5f1ea4b04f59f758c407b2a2073e5d2ff4ec5da7c25e682005b2e2785cdf43ed",
            "sha256:8e36d8db5663654ffca4815486c28cbd719cce6f857b16aae262db1e23c45a34",
            "sha256:2142f847fa2ac52fe51a3a79a2d724354eaf5af5d5af6dcf79eedc3a94ef0f4d",
            "sha256:de4edbfe90a79ee4912ee67489c917b45bc3087720d948273038e7389511e29a"
        ]
    },
    "Metadata": {
        "LastTagTime": "2025-07-07T12:28:55.626234785+08:00"
    }
}

更多版本

docker.io/vegardit/graalvm-maven:latest-java17

linux/amd64 docker.io985.15MB2025-07-07 12:29
5