larra/.devcontainer/Dockerfile

64 lines
2.8 KiB
Docker

# Base image using Arch Linux
# Date: Sep10 2024
# Url: https://hub.docker.com/layers/library/archlinux/latest/images/sha256-a10e51dd0694d6c4142754e9d06cbce7baf91ace8031a30df37064d1091ab414?context=explore
FROM archlinux@sha256:a10e51dd0694d6c4142754e9d06cbce7baf91ace8031a30df37064d1091ab414
# Update the package database
# 1. system tools
# 2. build/test tools
# 3. libraries
RUN pacman -Syyu --noconfirm \
&& pacman -S --noconfirm git less vim sudo python-pip wget which pkgconf \
&& pacman -S --noconfirm cmake make gcc ninja meson shellcheck \
&& pacman -S --noconfirm gtk4 gtkmm-4.0 boost spdlog fmt libxml++-5.0
# Add cached layer with the latest LLVM-19.1.0
RUN mkdir -p /home/artifacts
ADD https://github.com/llvm/llvm-project/releases/download/llvmorg-19.1.0/LLVM-19.1.0-Linux-X64.tar.xz /home/artifacts/
# Create the LLVM directory and extract only binaries into it
RUN mkdir -p /home/LLVM-19.1.0
RUN tar -xJf /home/artifacts/LLVM-19.1.0-Linux-X64.tar.xz -C /home/LLVM-19.1.0 --strip-components=1 LLVM-19.1.0-Linux-X64/bin/clang-19 LLVM-19.1.0-Linux-X64/bin/clang LLVM-19.1.0-Linux-X64/bin/clang++ LLVM-19.1.0-Linux-X64/bin/clang-scan-deps LLVM-19.1.0-Linux-X64/bin/clang-format LLVM-19.1.0-Linux-X64/bin/clang-tidy LLVM-19.1.0-Linux-X64/include/ LLVM-19.1.0-Linux-X64/lib/ LLVM-19.1.0-Linux-X64/libexec/ LLVM-19.1.0-Linux-X64/local/ LLVM-19.1.0-Linux-X64/share/
# Add /home/LLVM-19.1.0/bin to the PATH environment variable
ENV PATH="/home/LLVM-19.1.0/bin:${PATH}"
# Add extra tools
RUN mkdir -p /home/tools
ADD https://raw.githubusercontent.com/llvm/llvm-project/refs/heads/main/clang-tools-extra/clang-tidy/tool/run-clang-tidy.py /home/tools/
# Create a non-root user 'dev'
RUN useradd -ms /bin/bash dev \
&& echo "dev ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers.d/dev \
&& chmod 0440 /etc/sudoers.d/dev
# Add docker and docker-compose and add permissions to run without sudo
COPY --from=library/docker:latest /usr/local/bin/docker /usr/bin/docker
COPY --from=docker/compose:latest /usr/local/bin/docker-compose /usr/bin/docker-compose
RUN groupadd docker &&\
usermod -aG docker dev &&\
newgrp docker
# Add the custom bash prompt with branch info
RUN printf '\n\
function modify_prompt { \n\
local __user_and_host="\[\033[01;32m\]\u@\h" \n\
local __cur_location="\[\033[01;34m\]\w" \n\
local __git_branch_color="\[\033[31m\]" \n\
local __git_branch="\$(git branch 2> /dev/null | sed -e \'"'"'/^[^*]/d\'"'"' -e \'"'"'s/* \(.*\)/(\\1)/\'"'"')" \n\
local __prompt_tail="\[\033[00m\]$" \n\
export PS1="$__user_and_host $__cur_location $__git_branch_color$__git_branch$__prompt_tail " \n\
} \n\
modify_prompt\n' >> /home/dev/.bashrc
# Switch to the 'dev' user
USER dev
RUN git config --global core.editor vim
# Set the default working directory
WORKDIR /home/dev
# Set the default command
CMD ["/bin/bash"]