Docker Build 在 GitLab 上找不到 GradleWrapperMain 但可以在我的笔记本电脑上使用

Posted

技术标签:

【中文标题】Docker Build 在 GitLab 上找不到 GradleWrapperMain 但可以在我的笔记本电脑上使用【英文标题】:Docker Build can't find GradleWrapperMain on GitLab but works on my laptop 【发布时间】:2021-09-06 11:46:13 【问题描述】:

Docker 构建可以在我的笔记本电脑上运行,但在 GitLab 上我得到了 Error: Could not find or load main class org.gradle.wrapper.GradleWrapperMain

尝试了很多不同的设置,但没有任何效果...在 gradlew build 失败...欢迎任何想法

我的 .gitlab-ci.yaml

....variables here

publish:
  image:
    name: amazon/aws-cli
    entrypoint: [""]
  services:
    - docker:dind
  before_script:
    - amazon-linux-extras install docker
    - aws --version
    - docker --version
    - export GRADLE_USER_HOME=`pwd`/gradle
    - export CLASSPATH=`pwd`/gradle/wrapper

  cache:
    paths:
      - gradle/wrapper
      - .gradle/wrapper
      - .gradle/caches

  script:
    - docker build -t $DOCKER_REGISTRY/$APP_NAME:$CI_PIPELINE_IID .

我的 Dockerfile

FROM openjdk:11
ENV wdir=code
ENV MY_SERVICE_PORT=8080

WORKDIR /$wdir

COPY . /code

RUN echo "Running build"
RUN ["/code/gradlew", "build"]

EXPOSE $MY_SERVICE_PORT

# Run the service
CMD ["java", "-jar", "build/libs/code-1.0-SNAPSHOT.jar"]

【问题讨论】:

【参考方案1】:

通过安装 gradle 创建了一个解决方法...现在可以使用:

FROM openjdk:11
ENV wdir=code
ENV MY_SERVICE_PORT=8080

WORKDIR /code

# Install Gradle
RUN wget -q https://services.gradle.org/distributions/gradle-6.5-bin.zip \
    && unzip gradle-6.5-bin.zip -d /opt \
    && rm gradle-6.5-bin.zip

ENV GRADLE_HOME /opt/gradle-6.5
ENV PATH $PATH:/opt/gradle-6.5/bin

# Prepare by downloading dependencies
ADD build.gradle /code/build.gradle
ADD src /code/src

RUN echo "Running build"
RUN cd /code
RUN gradle --no-daemon build

EXPOSE $MY_SERVICE_PORT

# Run the service
CMD ["java", "-jar", "build/libs/code-1.0-SNAPSHOT.jar"]

【讨论】:

以上是关于Docker Build 在 GitLab 上找不到 GradleWrapperMain 但可以在我的笔记本电脑上使用的主要内容,如果未能解决你的问题,请参考以下文章

在 GitLab-ci Docker build 中执行外部 bash 脚本

npm install 后 Gitlab Shared Runner docker build

gitLab CI/CD docker自动部署vue前端项目

使用GitLab自动创建 Docker img

gitlab-ci docker-in-docker 访问不安全的注册表

Gitlab CI/CD 之 Gitlab Runner Docker Executor 缓存问题