안녕하세요,
현재 Discourse를 설치하여 실행 중입니다. 앱을 재빌드할 때마다 launcher 저장소, discourse/base Docker 이미지, 그리고 Discourse 저장소를 가져옵니다.
특정 파라미터가 전달되지 않는 한, 재빌드 시 업데이트를 확인하고 자동으로 가져오지 않도록 이 동작을 제한하고 싶습니다.
비슷한 작업을 해보신 분이 계신가요?
안녕하세요,
현재 Discourse를 설치하여 실행 중입니다. 앱을 재빌드할 때마다 launcher 저장소, discourse/base Docker 이미지, 그리고 Discourse 저장소를 가져옵니다.
특정 파라미터가 전달되지 않는 한, 재빌드 시 업데이트를 확인하고 자동으로 가져오지 않도록 이 동작을 제한하고 싶습니다.
비슷한 작업을 해보신 분이 계신가요?
버전 안정성에 대해 걱정되나요?
그럼 그냥 안정화 브랜치로 전환하면 되죠?
안정 버전인 3.2.0을 사용하고 있습니다.
컨테이너를 재빌드할 때마다 항상 git hub 또는 docker hub 저장소에서 가져오는 것이 아니라, 우리가 원하는 시점에만 가져오도록 하는 것이 의도입니다.
표준 설치를 사용 중이신가요?
그렇다면 왜 재구축 명령을 실행하지 않는 건가요?
참고로 안정판 업데이트는 중요할 수 있습니다. 보통 취약점이나 주요 버그 수정이 포함되어 있기 때문입니다.
네, 표준 스탠드얼론 방식을 사용하고 있습니다. 앱을 최신 상태로 유지해야 한다는 점은 잘 알고 있습니다. 제 아이디어는 저장소를 업데이트할 때 런처에 플래그를 추가하는 것입니다.
컨테이너를 재빌드하지 않고 재시작하려면 다음 명령을 실행하세요:
./launcher restart app
업데이트 없이 재빌드가 필요한 이유는 무엇인가요? 목표가 무엇인가요?
안정적인 업데이트에는 호환성이 깨지는 변경 사항이 포함될 가능성이 낮습니다.
stable의 핵심은 변경이 없다는 점입니다. 왜 굳이 재빌드하는 건가요?
컨테이너를 pull하는 이유는 discourse 코드의 요구사항과 일치성을 유지하기 위해서입니다.
pull을 하지 않고 컨테이너에 진입하고 싶다면 다음을 사용할 수 있습니다.
docker exec -it app bash
재빌드 없이 플러그인을 추가하려면 플러그인 디렉토리로 들어가서 클론을 하고, 그 후 데이터베이스를 마이그레이션하면 됩니다. 하지만 stable 환경에서 올바른 플러그인 커밋을 가져오고 있는지 확인해야 합니다.
플러그인을 추가하거나 제거한 경우 ./launcher restart app 명령어로 인스턴스가 업데이트되지 않을 수 있습니다.
안정판 릴리스는 상대적으로 드물고, 깨지는 변경사항(breaking changes)이 거의 없으며, 업데이트가 있을 때 중요한 보안 업데이트가 함께 제공되는 경우가 대부분이므로, 요구사항을 이해하지 못하겠습니다.
제 생각에 플러그인을 추가하는 것은 업데이트를 하고 모든 이용 가능한 업데이트를 가져왔는지 확인하기 위한 좋은 이유가 됩니다.
안정판에서 업데이트를 하지 않는 것은, 알려진 취약성에 더 오래 노출될 수 있으므로 제 생각에는 좋지 않은 관행입니다.
런처에 다음과 같은 변경 사항을 적용했습니다.
echo " --pull-git 최신 git 저장소 가져오기"
echo " --pull-image 최신 Docker 이미지 가져오기"
pull_git=false
pull_image=false
rebuild)
if [ "$(git symbolic-ref --short HEAD)" = "master" ] && [ "$pull_git" = true ]; then
git branch -m master main
git fetch origin
git branch -u origin/main main
git remote set-head origin -a
fi
....
이렇게 하면 재빌드할 때마다 업데이트를 할 필요가 없습니다. 이 방법을 사용하면 플러그인 설치가 가능합니다.
이러한 플러그인으로 문제가 발생하면, 새 주제를 만들 때 이 점을 꼭 언급해 주세요.
아니요, 적어도 제대로 된 방식으로는 그렇지 않습니다.
API 전용 플러그인의 경우 작동할 수 있지만, 새 플러그인의 자바스크립트는 빌드 과정에서 컴파일되어야 합니다.
따라서 대부분의 경우 새 플러그인을 추가하려면 재빌드를 수행해야 합니다.
또 다른 문제는 코어 빌드 스크립트를 변경할 때 주의하지 않으면 큰 문제에 직면할 수 있다는 점이며, 특히 코어 스크립팅에 상당한 변경 사항이 있는 경우 더욱 그렇습니다.