Modifica il percorso per l'eseguibile git per l'installazione di Discourse Docker

Ciao a tutti,

Grazie per l’ottima app del forum! Per favore, perdonatemi come neofita sia di Docker che di Discourse, se si tratta di una domanda banale. Sistema: Ubuntu LTS 20.04

Breve: c’è qualche modo per utilizzare git installato in una posizione diversa da /usr/bin?

Approfondito: ho installato manualmente una nuova versione di git (2.31.1) in /usr/local (per eliminare il collegamento a libgnutls e l’errore gnutls_handshake()) e ho aggiunto /usr/local/bin al PATH. Nel launcher, ho aggiunto echo $PATH && which git prima di cd /pups/ in run_command, ed eseguendo ./launcher rebuild app ottengo:

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

Questo significa che tutte le successive azioni git stanno effettivamente utilizzando /usr/bin/git? In tal caso, mi aspetterei che git venisse trovato in /usr/local/bin.

In realtà, non ricordo di aver installato git in /usr tramite apt-get o in qualche altro modo. Quindi penso che sia legato al modo in cui funziona Docker; c’è qualche modo per personalizzarlo?

Grazie ancora!
minye

Ciao a tutti,

Per chiunque si trovi qui, sono riuscito a farlo costruendo una nuova immagine, etichettata newgit, partendo dall’immagine base ufficiale di Discourse, e poi installando Discourse su di essa modificando la variabile image nel launcher.

Le istruzioni principali nel Dockerfile sono le seguenti. Tutte le dipendenze (perl, gcc, ecc.) sono gestite dall’immagine base.

# installa una versione di git priva di 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}*
# verifica l'installazione di git
RUN which git && git version && (ldd -v /usr/local/libexec/git-core/git-remote-https | grep gnutls) || echo "Git non è collegato a libgnutls"

e restituisce /usr/local/bin/git.

Sono consapevole che questo sia un hack poco elegante e non raccomandato dal team di sviluppo. Lo pubblico qui solo come riferimento da parte di un principiante di Docker, nel caso qualcuno abbia una richiesta simile.