# syntax=docker/dockerfile:1 ################################################################################ # Create a stage for building the application. ARG RUST_VERSION=1.71.1 ARG APP_NAME=timing-beachhead ARG PACKAGE_NAME=beachhead FROM rust:${RUST_VERSION}-slim-bullseye AS build ARG APP_NAME ARG PACKAGE_NAME WORKDIR /app RUN apt-get update && \ apt-get install -y --no-install-recommends \ build-essential \ pkg-config \ libssl-dev \ && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* # Build the application. # Leverage a cache mount to /usr/local/cargo/registry/ # for downloaded dependencies and a cache mount to /app/target/ for # compiled dependencies which will speed up subsequent builds. # Leverage a bind mount to the src directory to avoid having to copy the # source code into the container. Once built, copy the executable to an # output directory before the cache mounted /app/target is unmounted. RUN --mount=type=bind,source=src,target=src \ --mount=type=bind,source=obsidian-portal,target=obsidian-portal \ --mount=type=bind,source=toggl-portal,target=toggl-portal \ --mount=type=bind,source=lectures-portal,target=lectures-portal \ --mount=type=bind,source=Cargo.toml,target=Cargo.toml \ --mount=type=bind,source=Cargo.lock,target=Cargo.lock \ --mount=type=cache,target=/app/target/ \ --mount=type=cache,target=/usr/local/cargo/registry/ \ <