2301274850
Signed-off-by: Thomas Klaehn <thomas.klaehn@perinet.io>
50 lines
1.7 KiB
Docker
50 lines
1.7 KiB
Docker
# Base image
|
|
FROM debian:bookworm-slim
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
ENV LC_ALL=C.UTF-8
|
|
ENV LANG=C.UTF-8
|
|
|
|
# Arguments
|
|
ARG CONTAINER_USER=esp
|
|
ARG CONTAINER_GROUP=esp
|
|
ARG NIGHTLY_VERSION=nightly-2025-11-01
|
|
|
|
# Install dependencies
|
|
RUN apt-get update \
|
|
&& apt-get install -y \
|
|
curl unzip git pkg-config gcc \
|
|
libssl-dev libusb-1.0-0 libusb-1.0-0-dev libudev-dev \
|
|
sudo \
|
|
&& apt-get clean -y \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Create non-root user
|
|
RUN adduser --disabled-password --gecos "" ${CONTAINER_USER}
|
|
|
|
# Allow esp to sync the dialout group GID at container start
|
|
RUN echo "${CONTAINER_USER} ALL=(root) NOPASSWD: /usr/sbin/groupadd, /usr/sbin/groupmod, /usr/sbin/usermod, /usr/bin/chmod" \
|
|
>> /etc/sudoers.d/esp-dialout
|
|
USER ${CONTAINER_USER}
|
|
WORKDIR /home/${CONTAINER_USER}
|
|
|
|
# Install rustup + nightly toolchain with RISC-V target and rust-src component
|
|
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- \
|
|
--default-toolchain ${NIGHTLY_VERSION} -y --profile minimal \
|
|
--component rust-src,clippy,rustfmt \
|
|
--target riscv32imac-unknown-none-elf
|
|
|
|
ENV PATH=${PATH}:$HOME/.cargo/bin
|
|
|
|
# Install espflash (flash + monitor tool)
|
|
RUN ARCH=$($HOME/.cargo/bin/rustup show | grep "Default host" | sed -e 's/.* //') && \
|
|
curl -L "https://github.com/esp-rs/espflash/releases/latest/download/espflash-${ARCH}.zip" \
|
|
-o "${HOME}/.cargo/bin/espflash.zip" && \
|
|
unzip "${HOME}/.cargo/bin/espflash.zip" -d "${HOME}/.cargo/bin/" && \
|
|
rm "${HOME}/.cargo/bin/espflash.zip" && \
|
|
chmod u+x "${HOME}/.cargo/bin/espflash"
|
|
|
|
# Install probe-rs (on-chip debugger, flashing, RTT)
|
|
RUN $HOME/.cargo/bin/cargo install probe-rs-tools --locked
|
|
|
|
CMD ["/bin/bash"]
|