181 lines
4.8 KiB
Docker
181 lines
4.8 KiB
Docker
FROM git.bussmann-os.de/Software-Entwicklung/docker_images/base:latest
|
|
#FROM gen3-base
|
|
LABEL title="Bußmann IT Development Image"
|
|
LABEL description="DEV Container for Bußmann IT"
|
|
LABEL authors="manuel.bussmann@it-bussmann.de"
|
|
LABEL vendor="IT Bußmann"
|
|
LABEL version="0.1"
|
|
|
|
SHELL ["/bin/bash", "-c"]
|
|
|
|
# Set Language
|
|
ENV LANG=C.UTF-8
|
|
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
# Install Essentials
|
|
RUN apt update && apt install -y \
|
|
build-essential \
|
|
gdb \
|
|
rsync \
|
|
doxygen \
|
|
graphviz \
|
|
doxyqml \
|
|
cmake \
|
|
ninja-build \
|
|
curl \
|
|
zip \
|
|
python3 \
|
|
python3-html5lib \
|
|
python3-jinja2 \
|
|
python3-git \
|
|
openssl \
|
|
libssl-dev \
|
|
git \
|
|
ssh \
|
|
sudo \
|
|
dos2unix \
|
|
perl \
|
|
libcups2-dev \
|
|
libboost-all-dev \
|
|
libgmock-dev \
|
|
libgtest-dev \
|
|
libgl1-mesa-dev \
|
|
libvulkan-dev \
|
|
libxkbcommon-dev \
|
|
libglib2.0-dev \
|
|
libwayland-dev \
|
|
protobuf-compiler \
|
|
libprotoc-dev \
|
|
libpq-dev \
|
|
wget \
|
|
nano \
|
|
vim \
|
|
# Install libs for Qt modules
|
|
libdrm-dev \
|
|
libinput-dev \
|
|
libpulse-dev \
|
|
bison \
|
|
flex \
|
|
libnss3-dev \
|
|
libdbus-1-dev \
|
|
libgbm-dev \
|
|
libwebp-dev \
|
|
libjpeg-dev \
|
|
libicu-dev \
|
|
libhunspell-dev \
|
|
libva-dev \
|
|
libavcodec-dev \
|
|
libavformat-dev \
|
|
libzstd-dev \
|
|
libsystemd-dev \
|
|
libxrandr-dev \
|
|
# Install x11-libs
|
|
libfontconfig1-dev \
|
|
libfreetype6-dev \
|
|
libx11-dev \
|
|
libx11-xcb-dev \
|
|
libxext-dev \
|
|
libxfixes-dev \
|
|
libxi-dev \
|
|
libxrender-dev \
|
|
libxcb1-dev \
|
|
libxcb-cursor-dev \
|
|
libxcb-glx0-dev \
|
|
libxcb-keysyms1-dev \
|
|
libxcb-image0-dev \
|
|
libxcb-shm0-dev \
|
|
libxcb-icccm4-dev \
|
|
libxcb-sync-dev \
|
|
libxcb-xfixes0-dev \
|
|
libxcb-shape0-dev \
|
|
libxcb-randr0-dev \
|
|
libxcb-render-util0-dev \
|
|
libxcb-util-dev \
|
|
libxcb-xinerama0-dev \
|
|
libxcb-xkb-dev \
|
|
libxkbcommon-dev \
|
|
libxkbcommon-x11-dev \
|
|
libxcb-xinput-dev \
|
|
libxcomposite-dev \
|
|
libxcursor-dev \
|
|
libxshmfence-dev \
|
|
libxtst-dev \
|
|
libxkbfile-dev \
|
|
# Install useful analysis tools
|
|
shellcheck \
|
|
valgrind \
|
|
# Utils
|
|
gcovr \
|
|
graphviz \
|
|
plantuml \
|
|
clang-tidy-18 \
|
|
clang-format-18 \
|
|
clang-tools-18 \
|
|
clangd-18 \
|
|
llvm-18-dev \
|
|
lld-18 \
|
|
lldb-18 \
|
|
llvm-18-tools \
|
|
libomp-18-dev \
|
|
libc++-18-dev \
|
|
libc++abi-18-dev \
|
|
libclang-common-18-dev \
|
|
libclang-18-dev \
|
|
libclang-cpp18-dev \
|
|
libunwind-18-dev \
|
|
zsh
|
|
|
|
# Create the user
|
|
RUN usermod -l dev ubuntu \
|
|
&& usermod -d /home/dev -s /bin/bash -m dev \
|
|
&& groupmod -n dev ubuntu \
|
|
&& echo dev ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/dev \
|
|
&& chmod 0440 /etc/sudoers.d/dev
|
|
|
|
# Create aliases for ls
|
|
RUN echo "alias ll='ls -l'" >> /home/dev/.bashrc \
|
|
&& echo "alias la='ls -A'" >> /home/dev/.bashrc \
|
|
&& echo "alias l='ls -CF'" >> /home/dev/.bashrc
|
|
|
|
# Install Mireo Async MQTT5 header
|
|
RUN cd /root \
|
|
&& git clone https://github.com/mireo/async-mqtt5.git \
|
|
&& mv /root/async-mqtt5/include/* /usr/include/ \
|
|
&& rm -rf async-mqtt5/
|
|
|
|
# Install oh-my-zsh and copy all zsh configuration files to the user's home directory
|
|
RUN sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended && \
|
|
cp -r /root/.oh-my-zsh /home/dev/ && \
|
|
cp /root/.zshrc /home/dev/ && \
|
|
chown -R dev:dev /home/dev/.oh-my-zsh /home/dev/.zshrc
|
|
|
|
# Enable the following plugins in the .zshrc: git, ubuntu, compleat, aliases, colored-man-pages, cp, dirhistory, fzf, git-extras, brew, dotnet, sudo, zsh-interactive-cd, command-not-found, vscode, ssh
|
|
# Disable update checks in the .zshrc
|
|
# Modify .zshrc to use "tjkirch" as the default theme
|
|
# Install and enable the zsh-motd plugin
|
|
RUN sed -i 's/plugins=(git)/plugins=(git ubuntu compleat aliases colored-man-pages cp dirhistory fzf git-extras brew dotnet sudo zsh-interactive-cd command-not-found vscode ssh zsh-motd)/' /home/dev/.zshrc \
|
|
|
|
&& sed -i 's/# DISABLE_AUTO_UPDATE="true"/DISABLE_AUTO_UPDATE="true"/' /home/dev/.zshrc \
|
|
&& sed -i 's/ZSH_THEME="robbyrussell"/ZSH_THEME="tjkirch"/' /home/dev/.zshrc \
|
|
&& zsh -c "git clone https://github.com/Kallahan23/zsh-motd /home/dev/.oh-my-zsh/custom/plugins/zsh-motd"
|
|
|
|
|
|
# Use Clang to compile Qt
|
|
ENV CXX=/usr/bin/clang++-18
|
|
ENV CC=/usr/bin/clang-18
|
|
|
|
RUN ln -s /usr/bin/clang++-18 /usr/bin/clang++ \
|
|
&& ln -s /usr/bin/clang-18 /usr/bin/clang \
|
|
&& ln -s /usr/bin/clang-cpp-18 /usr/bin/clang-cpp \
|
|
&& ln -s /usr/bin/clangd-18 /usr/bin/clangd \
|
|
&& ln -s /usr/bin/clang-format-18 /usr/bin/clang-format \
|
|
&& ln -s /usr/bin/llvm-config-18 /usr/bin/llvm-config
|
|
|
|
ADD docker/make_llvm_pkgconfig.sh /root/make_llvm_pkgconfig.sh
|
|
RUN /root/make_llvm_pkgconfig.sh > /usr/lib/x86_64-linux-gnu/pkgconfig/libunwind.pc \
|
|
&& rm -rf /root/make_llvm_pkgconfig.sh
|
|
|
|
|
|
|
|
|