Изменение пути к исполняемому файлу git для установки Discourse в Docker

Всем привет,

Спасибо за отличное приложение форума! Прошу прощения, если вопрос тривиален — я новичок и в Docker, и в Discourse. Система: Ubuntu LTS 20.04.

Коротко: есть ли способ использовать git, установленный не в /usr/bin?

Подробно: я вручную установил новую версию git (2.31.1) в /usr/local (чтобы избавиться от ссылки на libgnutls и ошибки gnutls_handshake()), и добавил /usr/local/bin в PATH. В launcher я добавил команду echo $PATH && which git перед cd /pups/ в run_command. При запуске ./launcher rebuild app выводится:

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

Означает ли это, что все последующие действия git фактически используют /usr/bin/git? В таком случае я бы ожидал, что git будет найден в /usr/local/bin.

На самом деле, я не помню, чтобы устанавливал git в /usr через apt-get или каким-либо другим способом. Думаю, это связано с особенностями работы Docker. Есть ли способ настроить это?

Спасибо ещё раз!
minye

Всем привет,

Для тех, кто оказался здесь: мне удалось это сделать, собрав новый образ с тегом newgit на основе официального базового образа Discourse, а затем установив Discourse поверх него, изменив переменную image в launcher.

Основные инструкции в Dockerfile приведены ниже. Все зависимости (perl, gcc и т. д.) обрабатываются базовым образом.

# установить git без 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}*
# проверка установки git
RUN which git && git version && (ldd -v /usr/local/libexec/git-core/git-remote-https | grep gnutls) || echo "Git не связан с libgnutls"

В результате получается /usr/local/bin/git.

Я понимаю, что это грязный хак, не рекомендуемый командой разработчиков. Я привожу его здесь только как справочный материал от новичка в Docker, на случай, если у кого-то возникнет похожая задача.