# === Builder Stage === FROM alpine as builder # Install cmake to manage the build process. Removing cache by `docker builder prune` RUN --mount=type=cache,target=/var/cache/apk,sharing=locked \ apk add --cache-dir /var/cache/apk g++ make cmake # Alternatively, you can use --no-cache option to avoid creating a cache inside the container. # However, note that this will also prevent the use of the shared cache, affecting caching efficiency. # see also https://stackoverflow.com/questions/49118579/alpine-dockerfile-advantages-of-no-cache-vs-rm-var-cache-apk # Examples: # RUN apk --no-cache add g++ make cmake # or # RUN apk add g++ make cmake && apk add vim && rm -rf /var/cache/apk # Copy all source files from the current directory to /app in the image COPY CMakeLists.txt . COPY src ./src # Configuring, building and install the app RUN cmake . \ && make \ && make install # === Production Stage === FROM alpine # Copy only the built artifacts from the builder stage COPY --from=builder /usr/local/bin/HelloWorldApp /HelloWorldApp # Setting entry point to the app binary ENTRYPOINT ["/HelloWorldApp"]