FROM rust:1.83.0-slim-bookworm AS base
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
# Add some helper scripts
ENV PATH="/tools:${PATH}"
ENV LANG="C.UTF-8"
RUN DEBIAN_FRONTEND=noninteractive apt-get update \
&& apt-get -y dist-upgrade \
&& apt-get install -y \
build-essential \
git \
less \
libpq-dev \
make \
pkg-config \
procps \
&& apt-get autoremove --purge \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* \
&& rm -f /var/lib/dpkg/status-old
RUN useradd --create-home --shell /bin/bash appuser
WORKDIR /workspace
USER appuser
COPY --chown=appuser:appuser .bash_history /home/appuser/.bash_history
RUN cargo install \
cargo-edit \
cargo-fuzz \
cargo-outdated \
cargo-watch \
&& rustup component add rustfmt \
&& rustup install nightly
ENTRYPOINT ["cargo", "watch"]