Modifier le chemin vers l'exécutable git pour l'installation Docker de Discourse

Bonjour à tous,

Merci pour cette excellente application de forum ! Veuillez m’excuser si ma question semble banale, étant nouveau à la fois sur Docker et Discourse. Système : Ubuntu LTS 20.04

Court : Existe-t-il un moyen d’utiliser Git installé ailleurs que dans /usr/bin ?

Long : J’ai installé manuellement une nouvelle version de Git (2.31.1) dans /usr/local (pour éviter le lien vers libgnutls et l’erreur gnutls_handshake()) et j’ai ajouté /usr/local/bin à PATH. Dans le lanceur, j’ai ajouté echo $PATH && which git avant cd /pups/ dans run_command. Exécuter ./launcher rebuild app donne :

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin/:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
/usr/bin/git

Cela signifie-t-il que toutes les actions Git suivantes utilisent réellement /usr/bin/git ? Dans ce cas, je m’attendrais plutôt à ce que Git soit trouvé dans /usr/local/bin.

En fait, je ne me souviens pas avoir installé Git dans /usr via apt-get ou une autre méthode. Je pense donc que cela est lié au fonctionnement de Docker. Existe-t-il un moyen de le personnaliser ?

Merci encore !
minye

Bonjour à tous,

Pour ceux qui se trouvent par hasard ici, j’ai réussi à le faire en créant une nouvelle image, étiquetée newgit, à partir de l’image de base officielle de Discourse, puis en installant Discourse dessus en modifiant la variable image dans le lanceur.

Les principales instructions dans le Dockerfile sont les suivantes. Toutes les dépendances (perl, gcc, etc.) sont gérées par l’image de base.

# installer une version de git sans gnutls
RUN cd / && \
    vcurl=7.68.0 && wget http://dl.uxnr.de/mirror/curl/curl-$vcurl.tar.gz && \
    vssl=1.1.1f && wget http://www.openssl.org/source/openssl-$vssl.tar.gz && \
    vgit=2.31.1 && wget http://mirrors.edge.kernel.org/pub/software/scm/git/git-$vgit.tar.gz && \
    tar -zxf curl-$vcurl.tar.gz && tar -zxf openssl-$vssl.tar.gz && \
    tar -zxf git-$vgit.tar.gz && \
    cd openssl-$vssl && ./config --prefix=/usr/local && make && make install && cd .. && \
    cd curl-$vcurl && ./configure --with-ssl=/usr/local --prefix=/usr/local --without-gnutls --disable-ldap --without-librtmp && make && make install && cd .. && \
    cd git-$vgit && make configure && ./configure --prefix=/usr/local --with-openssl=/usr/local --with-curl=/usr/local && make && make install && cd ../ && \
    rm -rf /curl-${vurl}* /openssl-${vssl}* /git-${vgit}*
# vérifier l'installation de git
RUN which git && git version && (ldd -v /usr/local/libexec/git-core/git-remote-https | grep gnutls) || echo "Git n'est pas lié à libgnutls"

et cela fournit /usr/local/bin/git.

Je suis conscient que ceci est un hack peu élégant et non recommandé par l’équipe de développement. Je le partage ici uniquement à titre de référence pour un néophyte Docker, au cas où quelqu’un aurait une demande similaire.