
rcktsci/java-tooling基于Bellsoft Liberica JDK Alpine Musl的定期更新镜像,提供LTS、当前及之前版本的Java环境。目标用户为使用Maven/Gradle、Testcontainers并打包容器镜像的Java开发者,支持在单个CI/CD作业中完成应用构建、测试、打包镜像及推送至仓库。
81117212524-gradle8:表示安装最新Gradle 8.x.x版本,默认安装9+版本-code-coverage:已弃用,不应使用包含开发过程中常用的工具与依赖:
jq、yq(JSON/YAML处理)git(版本控制)curl、wget(网络请求)tzdata(时区数据)gettext(国际化支持)gcompat(兼容性库)yamllint(YAML校验)fontconfig、ttf-dejavu(字体支持)busybox-extras(额外工具集)适用于以下开发场景:
镜像构建的Dockerfile如下:
dockerfileARG JAVA_VERSION FROM bellsoft/liberica-openjdk-alpine-musl:${JAVA_VERSION} # 需保持更新的参数 ARG DOCKER_VERSION ARG MAVEN3_VERSION ARG GRADLE_VERSION # 二进制文件下载链接 ARG DOCKER_CLI_URL="[***]" ARG MAVEN3_CLI_URL="[***]" ARG GRADLE_CLI_URL="[***]{GRADLE_VERSION}-bin.zip" # 将安装目标添加到PATH ENV PATH="/opt/apache-maven-$MAVEN3_VERSION/bin:/opt/gradle-$GRADLE_VERSION/bin:${PATH}" ARG ADDITIONAL_ALPINE_PACKAGES="curl" # 最终更新OS包 # hadolint ignore=DL3017, DL3018, DL3019 RUN echo "[***]" > /etc/apk/repositories \ && echo "[***]" >> /etc/apk/repositories \ && apk update \ && apk upgrade --available \ && apk add $ADDITIONAL_ALPINE_PACKAGES \ && rm -rf /var/cache/apk/* # ===== ===== ===== 安装Docker CLI ===== ===== ===== RUN curl -s -L -o /tmp/docker-$DOCKER_VERSION.tgz $DOCKER_CLI_URL \ && tar -x -z -C /tmp -f /tmp/docker-$DOCKER_VERSION.tgz \ && mv /tmp/docker/docker /usr/local/bin/ \ && rm -f /tmp/docker-$DOCKER_VERSION.tgz \ && rm -rf /tmp/docker \ && docker --version \ && echo "✔️ Docker CLI ${DOCKER_VERSION} installed." # ===== ===== ===== 安装Apache Maven ===== ===== ===== RUN curl -s -L -o /opt/apache-maven-$MAVEN3_VERSION-bin.zip $MAVEN3_CLI_URL \ && unzip -q -d /opt /opt/apache-maven-$MAVEN3_VERSION-bin.zip \ && rm -f /opt/apache-maven-$MAVEN3_VERSION-bin.zip \ && mvn --version \ && echo "✔️ Maven ${MAVEN3_VERSION} installed." # ===== ===== ===== 安装Gradle ===== ===== ===== RUN curl -s -L -o /opt/gradle-$GRADLE_VERSION-bin.zip $GRADLE_CLI_URL \ && unzip -q -d /opt /opt/gradle-$GRADLE_VERSION-bin.zip \ && rm -f /opt/gradle-$GRADLE_VERSION-bin.zip \ && gradle --version \ && echo "✔️ Gradle ${GRADLE_VERSION} installed."
yamlsome-job: image: rcktsci/java-tooling:25 services: - docker:28-dind variables: MAVEN_OPTS: "-Dmaven.repo.local=${CI_PROJECT_DIR}/.m2/repository" script: - docker run --rm -i hadolint/hadolint < Dockerfile - mvn --batch-mode verify - docker build --tag my-app . - docker push my-app cache: key: .m2 paths: - .m2/repository when: always artifacts: reports: junit: - 'target/surefire-reports/TEST-*.xml' - 'target/failsafe-reports/TEST-*.xml' coverage_report: coverage_format: jacoco path: 'target/site/jacoco/jacoco.xml'
yamlsome-job: image: rcktsci/java-tooling:25 services: - docker:28-dind variables: GRADLE_USER_HOME: "$CI_PROJECT_DIR/.gradle" script: - docker run --rm -i hadolint/hadolint < Dockerfile - gradle --build-cache --info --stacktrace build - docker build --tag my-app . - docker push my-app cache: key: .gradle paths: - .gradle/caches/ - .gradle/wrapper/ - .gradle/build-cache/ when: always artifacts: reports: junit: - 'build/test-results/test/TEST-*.xml'
由于GitLab现已原生支持JaCoCo代码覆盖率报告,-code-coverage标签已弃用,建议直接使用GitLab的内置功能。
在GitLab CI的共享或个人运行器上,需配置以下环境变量以连接Docker守护进程:
yamlvariables: DOCKER_HOST: tcp://docker:2376 DOCKER_TLS_CERTDIR: "/certs" DOCKER_TLS_VERIFY: 1 DOCKER_CERT_PATH: "/certs/client"
详细信息请参考GitLab官方文档。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务