Вы можете разделить его на несколько этапов, например этапы компиляции и выполнения, например, для java -gradle:
FROM gradle as builder // use base grale image
RUN /usr/bin/gradle bootJar // build app
FROM openjdk:11-jre-slim // use other base image
COPY --from=builder /path_to_builded/example-1.0.jar app.jar // copy file from prev step
CMD ["java", "-jar", "/app/app.jar"] // run it
Этот пример не готов к работе, просто чтобы показать, как он работает.