Files
slides-optimized-docker-builds/.docker-files/5-base-image.Dockerfile
2023-11-26 23:22:29 +01:00

33 lines
1.1 KiB
Docker

# === 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"]