프로덕션 환경에서 플러그인에 `eth` 지니 설치 중 어려움

다음과 같이 진행했습니다. 서버에 로그인한 후 docker 컨테이너에 진입했습니다.

  • gems라는 이름의 폴더를 생성합니다.

  • 하위 디렉터리 2.7.5를 생성합니다(tests-passed에서 프로덕션 discourse가 사용하는 ruby 버전).

  • gems 폴더로 다시 이동합니다.

  • 다음과 같은 방식으로 명령어를 실행합니다.

    RUBY_VERSION=2.7.5
    gem install pkg-config -v 1.4.7 -i $RUBY_VERSION --no-document --ignore- 
    dependencies --no-user-install
    gem install mkmfmf -v 0.4 -i $RUBY_VERSION --no-document --ignore-dependencies 
    --no-user-install
    ...
    

    참고: 이 명령어들은 discourse가 gem을 설치하려고 실행하는(실패하는) 것과 정확히 동일한 명령어입니다.

  • 이제 이 폴더를 zip으로 압축합니다.

  • docker 컨테이너에서 나와서 docker cp 명령어를 사용하여 zip 파일을 컨테이너 외부로 복사합니다.

  • filezilla 또는 vscode를 사용하여 서버에 연결하고 zip 파일을 다운로드합니다.

  • 플러그인의 루트 폴더에 압축을 풉니다. 그러면 플러그인 폴더에 gems 디렉터리가 포함됩니다.

  • 이제 플러그인과 함께 gems 폴더를 github에 push합니다.

이제 이 플러그인으로 discourse를 다시 빌드하면, discourse가 제공한 의존성을 사용하고 설치하려고 시도하지 않습니다. 이것은 임시 해결책이며, discourse가 ruby 버전을 업데이트하면 다시 수행해야 합니다.

그러나 가장 큰 질문은, 터미널에서 실행할 때는 작동하는 동일한 명령어가 discourse가 실행하려고 할 때 왜 실패하는지입니다. 이 문제를 조사해 보는 것이 매우 가치가 있으며, 간단한 해결책이 있기를 바랍니다.