안녕하세요,
Woltlab 포럼에서 Discourse로 데이터를 가져올 수 있도록 커스텀 임포터 개발을 진행했습니다. 이를 위해 Docker 없이 개발 머신에서 Discourse를 직접 실행했으며, 현재 script/import_scripts/ 디렉터리에 마이그레이션 코드가 포함된 여러 파일이 있습니다. 해당 파일들은 당분간 공식 Discourse GitHub 저장소의 포크에 저장되어 있습니다.
이제 공식적인 Docker 기반 설치 환경으로 마이그레이션하고자 합니다. 마이그레이션을 점진적으로 진행해야 하므로, 새로운 설치 환경에서도 임포터 코드를 일정 기간 동안 사용할 수 있어야 합니다. 가능하다면 임포터 코드를 별도의 저장소에 유지하면서, 프로덕션 환경에 깔끔하게 적용하는 방법을 찾고 있습니다.
Rails에 대한 지식이 제한적이라显而易見한 접근법을 놓치고 있을 수 있습니다. 올바른 방향을 알려주실 수 있는 분 계신가요?
감사합니다!
Hans
감사합니다, @RGJ! 그 방향으로 진행하겠습니다.
Docker 컨테이너 내부의 저장소 URL을 변경하여 임포터트를 실행할 수 있었습니다. 하지만 ./launcher rebuild app을 실행하자 저장소가 업스트림으로 리셋되었습니다. Dockerfile을 확인해 보니 저장소 경로가 하드코딩되어 있는 것 같지만, 기본 컨테이너가 로컬에서 빌드되는 것 같지도 않아 Dockerfile을 변경해도 원하는 효과가 나타나지 않습니다. 이 문제를 해결할 수 있는 공식적인 방법이 있을까요?
컨테이너 두 개를 함께 사용하는 것을 권장합니다. 이를 위해 현재 app.yml 파일(경로: /var/discourse/containers)을 복사한 뒤 import.yml과 같은 다른 이름으로 변경하세요. 그런 다음 version 파라미터를 커스텀 임포터 브랜치로 업데이트합니다.
params:
version: your-branch
임포트를 실행해야 할 때마다 app 컨테이너를 중지하고 import 컨테이너를 시작한 뒤, import 컨테이너 내부에서 스크립트를 실행하면 됩니다. Discourse에 중요한 변경 사항이 있었다면, 코어 최신 커밋으로 브랜치를 리베이스하고 컨테이너를 다시 빌드해야 할 수 있습니다.
cd /var/discourse
./launcher enter import
# 다른 브랜치로 전환하고 싶나요?
su discourse -c 'git checkout <branch>'
# 새 코드를 가져오고 싶나요?
su discourse -c 'git pull'
마이그레이션이 완료되면 import 컨테이너를 중지하고 app 컨테이너를 다시 시작하세요.
cd /var/discourse
./launcher stop import
./launcher start app
이 모든 과정을 알려준 @gerhard 님께 감사드립니다 