Discourse Docker インストール用の git 実行可能ファイルへのパスを変更

こんにちは、皆様。

素晴らしいフォーラムアプリをありがとうございます!Docker と Discourse の両方の初心者ですので、もし些細な質問であればお許しください。システム:Ubuntu LTS 20.04

短く言うと: git を /usr/bin 以外の場所にインストールして利用することは可能でしょうか?

詳しく言うと: libgnutls へのリンクと gnutls_handshake() エラーを解消するため、/usr/local に git の新バージョン(2.31.1)を手動でインストールし、PATH に /usr/local/bin を追加しました。launcher 内の run_commandcd /pups/ の前に echo $PATH && which git を追加し、./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 で見つかることを期待していました。

実際、apt-get や他の方法で git を /usr にインストールした記憶はありません。これは Docker の動作に関連していると思われますが、これをカスタマイズする方法はありますか?

再度ありがとうございます!
minye

みなさんこんにちは、

ここに偶然いらっしゃっている方のために、Discourse の公式ベースイメージから newgit というタグを付けた新しいイメージをビルドし、その後 launcherimage 変数を修正してその上に Discourse をインストールすることで、これを達成できました。

Dockerfile の主な手順は以下の通りです。すべての依存関係(perl、gcc など)はベースイメージによって処理されます。

# gnutls がない git をインストール
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 is not linked to libgnutls"

これにより /usr/local/bin/git が生成されます。

これは不純なハックであり、開発チームが推奨するものではないことは承知しています。同じような要望を持つ方がいるかもしれないため、Docker の素人が参考までにここに記載しました。