훌륭한 포럼 앱을 만들어 주셔서 감사합니다! Docker와 Discourse 모두 초보자인 제가 자명한 질문을 드려 죄송합니다. 시스템: Ubuntu LTS 20.04
간단히: /usr/bin 이외의 위치에 설치된 git을 사용할 수 있는 방법이 있나요?
상세히: libgnutls 링크와 gnutls_handshake() 오류를 제거하기 위해 git의 새로운 버전(2.31.1)을 /usr/local에 수동으로 설치하고 PATH에 /usr/local/bin을 추가했습니다. 런처에서 run_command의 cd /pups/ 앞에 echo $PATH && which git를 추가했고, ./launcher rebuild app을 실행하면 다음과 같은 결과가 나옵니다.
여기 계신 분들을 위해 공유드립니다. 저는 Discourse 공식 기본 이미지를 기반으로 newgit 태그를 붙인 새 이미지를 빌드한 뒤, launcher의 image 변수를 수정하여 그 위에 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 초보자로서 유사한 요구 사항이 있는 분들을 위해 참고용으로만 올립니다.