30 lines
935 B
Docker
30 lines
935 B
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.
|
|
# Example:
|
|
# RUN apk --no-cache add g++ mahe cmake
|
|
|
|
# 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"]
|