|
|
@@ -20,14 +20,11 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
|
perl \
|
|
|
gawk \
|
|
|
m4 \
|
|
|
- vi \
|
|
|
+ vim \
|
|
|
libatomic1 \
|
|
|
nano sudo lsof gawk emacs jq neowofetch curl wget \
|
|
|
gdb valgrind clang-format \
|
|
|
ca-certificates iputils-ping \
|
|
|
- xauth \
|
|
|
- iputils-ping \
|
|
|
- pkg-config \
|
|
|
colordiff \
|
|
|
mpi-default-dev \
|
|
|
python3 python3-dev python3-numpy \
|
|
|
@@ -46,7 +43,6 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
|
shared-mime-info \
|
|
|
adwaita-icon-theme-full hicolor-icon-theme fonts-liberation \
|
|
|
graphviz \
|
|
|
- patchelf \
|
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
|
|
RUN dbus-uuidgen > /etc/machine-id
|
|
|
@@ -121,20 +117,24 @@ RUN git clone --depth 1 https://github.com/pdidev/pdi.git . && \
|
|
|
|
|
|
|
|
|
|
|
|
+# -----------------------------------------------------------------------------
|
|
|
+# 4. Création de l'utilisateur (Structure décomposée conservée)
|
|
|
+# -----------------------------------------------------------------------------
|
|
|
+RUN groupadd -g ${GROUP_ID} ${USER_NAME} && \
|
|
|
+ useradd -m -u ${USER_ID} -g ${USER_NAME} -s /bin/bash ${USER_NAME} && \
|
|
|
+ echo "${USER_NAME} ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
|
|
|
|
|
|
+USER ${USER_NAME}
|
|
|
+WORKDIR /home/${USER_NAME}/project
|
|
|
|
|
|
# -----------------------------------------------------------------------------
|
|
|
-# 4. Pré-installation des paquets Julia
|
|
|
+# 5. Pré-installation des paquets Julia
|
|
|
# On utilise xvfb-run pour que ProfileView/Gtk puissent se précompiler sans écran physique.
|
|
|
# -----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
-#RUN echo "Application du patch 'clear-execstack' sur les librairies Julia..." && \
|
|
|
-# find $JULIA_PATH -name "libopenlibm.so" -exec patchelf --clear-execstack {} \; && \
|
|
|
-# # On applique aussi sur libjulia-internal par sécurité
|
|
|
-# find $JULIA_PATH -name "libjulia-internal.so*" -exec patchelf --clear-execstack {} \; && \
|
|
|
-# find $JULIA_PATH -type f -name "*.so*" -exec patchelf --clear-execstack {} \;
|
|
|
ENV LD_LIBRARY_PATH=/usr/local/julia/lib:/usr/local/julia/lib/julia:/usr/local/lib:/usr/lib/x86_64-linux-gnu
|
|
|
+
|
|
|
ENV GKSwstype=100
|
|
|
ENV JULIA_PKG_PRECOMPILE_AUTO=0
|
|
|
ENV JULIA_PKG_USE_CLI_GIT=true
|
|
|
@@ -144,7 +144,6 @@ ENV JULIA_PKG_USE_CLI_GIT=true
|
|
|
RUN xvfb-run --auto-servernum --server-args="-screen 0 1920x1080x24 -nolisten tcp" \
|
|
|
julia -e 'import Pkg; \
|
|
|
Pkg.add([ \
|
|
|
-# "Plots", \
|
|
|
"DataFrames", \
|
|
|
"Gtk4", \
|
|
|
"Gtk", \
|
|
|
@@ -153,26 +152,13 @@ ENV JULIA_PKG_USE_CLI_GIT=true
|
|
|
"Reexport" \
|
|
|
])'
|
|
|
|
|
|
-# ÉTAPE B : ACTION CORRECTIVE CRITIQUE
|
|
|
-# Pkg.add a téléchargé des artifacts (.so) qui violent la sécurité execstack.
|
|
|
-# On doit les patcher AVANT que Julia ne tente de les charger pour la précompilation.
|
|
|
-#RUN echo "Patching des artifacts téléchargés dans .julia..." && \
|
|
|
-# find /root/.julia -name "*.so*" -exec patchelf --clear-execstack {} \;
|
|
|
+
|
|
|
ENV LD_LIBRARY_PATH=""
|
|
|
-# ÉTAPE C : Précompilation (Maintenant c'est sûr)
|
|
|
-# On utilise xvfb-run car Gtk/ProfileView ont besoin d'un serveur X, même virtuel.
|
|
|
+
|
|
|
RUN xvfb-run --auto-servernum --server-args="-screen 0 1920x1080x24 -nolisten tcp" \
|
|
|
julia -e 'import Pkg; Pkg.precompile()'
|
|
|
ENV LD_LIBRARY_PATH=/usr/local/julia/lib:/usr/local/julia/lib/julia:/usr/local/lib:/usr/lib/x86_64-linux-gnu
|
|
|
-# -----------------------------------------------------------------------------
|
|
|
-# 5. Création de l'utilisateur (Structure décomposée conservée)
|
|
|
-# -----------------------------------------------------------------------------
|
|
|
-RUN groupadd -g ${GROUP_ID} ${USER_NAME} && \
|
|
|
- useradd -m -u ${USER_ID} -g ${USER_NAME} -s /bin/bash ${USER_NAME} && \
|
|
|
- echo "${USER_NAME} ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
|
|
|
|
|
|
-USER ${USER_NAME}
|
|
|
-WORKDIR /home/${USER_NAME}/project
|
|
|
ENV DISPLAY=host.docker.internal:0.0
|
|
|
|
|
|
CMD ["/bin/bash"]
|