ProgramCOder
ProgramCOder

Reputation: 147

Gradle build in Docker File

I am trying to run my DockerFile and Gradle build inside . I have tried all the ways to do it , but can't understand. Here is my dockerFile it is working properly, but DO NOT making the gradle BUILD , can someone help me With it:

FROM gradle:4.7.0-jdk8-alpine AS build
COPY . /temp
RUN gradle build --no-daemon

FROM  java:8-jdk AS TEMP_BUILD_IMAGE

COPY . /tmp

EXPOSE 8080

ENTRYPOINT  ["java", "-jar", "/app.jar"]

The output is

'<unknown> Dockerfile: DockerFile' has been deployed successfully.

But it is not building me the Gradle. P.S i am new to DOCKER , and maybe i am doing the wrong stuff in my docker FIle

Upvotes: 5

Views: 4438

Answers (1)

queeg
queeg

Reputation: 9473

You have a multistage build here that you need to understand.

FROM gradle:4.7.0-jdk8-alpine AS build
COPY . /temp
RUN gradle build --no-daemon

This will create a docker container, copy the complete docker build context into the container and run gradle. You did not show the complete console output so I can only guess that this ran successfully. Also you did not show your build.gradle file so noone can tell you where to search for the compile result.

FROM  java:8-jdk AS TEMP_BUILD_IMAGE
COPY . /tmp
EXPOSE 8080
ENTRYPOINT  ["java", "-jar", "/app.jar"]

With these lines you create the next stage's docker container, and again you copy your project into the container. But nowhere I see that you would transport the build output from the first stage into the second stage. As this is missing, the resulting container of course does not contain the build result, and you believe it did not happen.

You need to add a line such as

COPY --from=build /whateverPointsToYourBuildOutput /whereverYouWantItInTheContainer

See https://docs.docker.com/engine/reference/builder/#copy

Upvotes: 5

Related Questions