diff --git a/base.dockerfile b/base.dockerfile new file mode 100644 index 0000000..52c9171 --- /dev/null +++ b/base.dockerfile @@ -0,0 +1,35 @@ +FROM ubuntu:noble-20241015 + +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" + +ENV DEBIAN_FRONTEND=noninteractive +SHELL ["/bin/bash", "-c"] +# Install Essentials +RUN apt update && apt install -y --no-install-recommends \ + libprotobuf32 \ + openssl \ + nodejs \ + zstd \ + systemd \ + gperf \ + postgresql-common \ + mesa-va-drivers \ + intel-media-va-driver \ + libxcb-cursor0 \ + libxcb-keysyms1 \ + libxcb-icccm4 \ + libpcre2-16-0 \ + curl \ + ca-certificates \ + gnupg + +# Add NanoMQ repository and Install +RUN curl -fsSL "https://packages.emqx.com/emqx/nanomq/gpgkey" | gpg --dearmor -o /usr/share/keyrings/emqx_nanomq-archive-keyring.gpg && curl -sSf "https://assets.emqx.com/scripts/emqx_nanomq.list" > /etc/apt/sources.list.d/emqx_nanomq.list +RUN apt-get update && apt-get install -y nanomq && apt-get remove -y curl + +# Set system language +ENV LANG=C.UTF-8 \ No newline at end of file diff --git a/dev.dockerfile b/dev.dockerfile new file mode 100644 index 0000000..c8a99dd --- /dev/null +++ b/dev.dockerfile @@ -0,0 +1,180 @@ +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 + + + + diff --git a/environment.dockerfile b/environment.dockerfile new file mode 100644 index 0000000..111194b --- /dev/null +++ b/environment.dockerfile @@ -0,0 +1,24 @@ +FROM git.bussmann-os.de/Software-Entwicklung/docker_images/dev:latest as dev +#FROM gen3-dev as dev +SHELL ["/bin/bash", "-c"] +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" + +# Get Qt6 from qt.dockerfile +COPY --from=qt /opt/qt6/ /opt/qt6/ + +# Change to CCI user for vcpkg ownage +USER cci + +# Add Clang-Format to image +ADD utils/clang/.clang-format /home/dev/.clang-format + +# Set system language and compiler variables +ENV LANG=C.UTF-8 +ENV CXX=/usr/bin/clang++-18 +ENV CC=/usr/bin/clang-18 +ENV CLANG=/usr/bin/clang +ENV CLANGXX=/usr/bin/clang++