Something went wrong. Try again.
Source code for my personal quote bot project.
Something went wrong. Try again.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758# syntax=docker/dockerfile:1
# Comments are provided throughout this file to help you get started.# If you need more help, visit the Dockerfile reference guide at# https://docs.docker.com/reference/dockerfile/
################################################################################# Create a stage for building the application.
ARG RUST_VERSION=1.85.0ARG APP_NAME=audquotesFROM rust:${RUST_VERSION}-bullseye AS buildWORKDIR /app
# 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=quotes,target=quotes \ --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/ \ <<EOFset -ecargo build --locked --releasecp ./target/release/audquotes /bin/servercp -r ./quotes /bin/quotesEOF
################################################################################# Create a new stage for running the application that contains the minimal# runtime dependencies for the application. This often uses a different base# image from the build stage where the necessary files are copied from the build# stage.## The example below uses the debian bullseye image as the foundation for running the app.# By specifying the "bullseye-slim" tag, it will also use whatever happens to be the# most recent version of that tag when you build your Dockerfile. If# reproducibility is important, consider using a digest# (e.g., debian@sha256:ac707220fbd7b67fc19b112cee8170b41a9e97f703f588b2cdbbcdcecdd8af57).FROM debian:bullseye AS final
RUN apt update && apt upgrade -y && apt install -y openssl ca-certificates
# Copy the executable from the "build" stage.COPY --from=build /bin/server /bin/COPY --from=build /bin/quotes /quotes
# Expose the port that the application listens on.EXPOSE 8080
# What the container should run when it is started.CMD ["/bin/server"]