| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- # Base : Debian Bookworm avec Julia 1.10 pré-installé
- FROM julia:1.10-bookworm
- # Métadonnées
- LABEL maintainer="jmbatto"
- LABEL description="Environnement de portage Julia -> C avec PDI/HDF5 et Outils graphiques"
- # Arguments pour gérer l'utilisateur (évite les fichiers root sur le host)
- ARG USER_ID=1001
- ARG GROUP_ID=1001
- ARG USER_NAME=coder
- # 1. Installation des dépendances système (C/C++, HDF5, Outils graphiques, Build tools)
- # Nous incluons gdb et valgrind pour la rigueur du C.
- # Nous incluons les libs X11 pour l'affichage des plots.
- RUN apt-get update && apt-get install -y --no-install-recommends \
- build-essential \
- nano \
- sudo \
- lsof \
- gawk \
- emacs \
- jq \
- neofetch \
- cmake \
- git \
- libhdf5-dev \
- libz-dev \
- pkg-config \
- gdb \
- valgrind \
- clang-format \
- libx11-6 \
- libxext6 \
- libxrender1 \
- libxtst6 \
- xauth \
- ca-certificates \
- iputils-ping \
- pkg-config \
- colordiff \
- mpi-default-dev \
- && rm -rf /var/lib/apt/lists/*
- # Configuration de l'environnement pour PDI
- ENV PDI_DIR=/usr/local
- ENV LD_LIBRARY_PATH=/usr/local/lib
- ENV CPATH=/usr/local/include
- ENV PREFIX=/usr/local
- # 2. Installation de PDI (Build from source pour exclure MPI et garantir HDF5)
- # Nous clonons, configurons et installons PDI dans /usr/local
- WORKDIR /tmp/pdi-build
- RUN git clone https://github.com/pdidev/pdi.git . && \
- mkdir build && cd build && \
- cmake \
- -DBUILD_MPI=OFF \
- -DBUILD_DECL_HDF5_PLUGIN=ON \
- -DBUILD_SHARED_LIBS=ON \
- -DBUILD_FORTRAN=OFF \
- -DBUILD_HDF5_PARALLEL=OFF \
- -DBUILD_NETCDF_PARALLEL=OFF \
- -DCMAKE_INSTALL_PREFIX=/usr/local \
- .. && \
- make -j$(nproc) && \
- make install && \
- ldconfig && \
- cd / && rm -rf /tmp/pdi-build
- # 3. Pré-installation des packages Julia essentiels pour le portage
- # HDF5.jl pour lire/écrire ce que PDI manipule
- # Plots.jl pour la visualisation
- RUN julia -e 'import Pkg; Pkg.add(["HDF5", "Plots", "DataFrames"]); Pkg.precompile()'
- # 4. Création de l'utilisateur non-root
- RUN groupadd -g ${GROUP_ID} ${USER_NAME} && \
- useradd -m -u ${USER_ID} -g ${USER_NAME} -s /bin/bash ${USER_NAME}
- # Passage à l'utilisateur
- USER ${USER_NAME}
- WORKDIR /home/${USER_NAME}/project
- # Point d'entrée par défaut : un shell bash prêt à l'emploi
- CMD ["/bin/bash"]
|