CentOS의 Bahmni에서 Docker 기반 Bahmni Standard 또는 Lite로 업그레이드
업그레이드 준비:
CentOS에서 실행 중인 기존 운영 시스템을 Docker 기반 Bahmni로 업그레이드할 계획이라면 Bahmni Docker를 실행할 추가 하드웨어(서버)를 준비하십시오. Standard 구성 요소 대부분을 실행하는 운영 환경에는 CPU 4개(3GHz 초과)와 RAM 16GB를 갖춘 서버가 적절합니다.
아티팩트 백업
다음은 Bahmni의 모든 구성 요소를 포괄하여 기존 설치에서 추출해야 하는 일반적인 백업 아티팩트입니다. 사용하지 않는 구성 요소의 백업 아티팩트는 무시해도 됩니다.
참고: 아래 명령은 모든 백업 아티팩트를 저장할 /bahmni-backup 디렉터리를 만들었다고 가정합니다. 기존 설치의 백업을 이미 구성하여 아티팩트를 보유하고 있다면 아래 디렉터리 구조에 맞게 배치하면 됩니다.
| Artifact Name | Description | Default location on server | Command to generate the artifact with default credentials | |
|---|---|---|---|---|
| 1 | Bahmni Configuration | The configuration folder of Bahmni and its sub-components. Most implementations would have this as a Git repository. | /opt/bahmni-web/etc/bahmni_config/ | cp -a /opt/bahmni-web/etc/bahmni_config /bahmni-backup/ |
| 2 | OpenMRS Database Backup | Backup of the OpenMRS mysql database | - | mysqldump -u root --password=P@ssw0rd --routines openmrs --no-tablespaces > "/bahmni-backup/openmrsdb_backup.sql" |
| 3 | Reports Database Backup | Backup of the Reports mysql database | - | mysqldump -u reports-user --password=password --routines bahmni_reports --no-tablespaces > "/bahmni-backup/reportsdb_backup.sql" |
| 4 | OpenELIS Database Backup | Backup of the OpenELIS Postgres database | - | pg_dump -U clinlims -d clinlims -F p -b -v > "/bahmni-backup/openelisdb_backup.sql" |
| 5 | Odoo Database Backup | Backup of the Odoo Postgres database | - | pg_dump -U odoo -d odoo -F p -b -v > "/bahmni-backup/odoo_10_db_backup.sql" |
| 6 | DCM4CHEE Database Backup | Backup of the DCM4CHEE Postgres database | - | pg_dump -U postgres -d pacsdb -F p -b -v > "/bahmni-backup/dcm4cheedb_backup.sql" |
| 7 | Pacs Integration Database Backup | Backup of the PACS Integration Postgres database | - | pg_dump -U postgres -d bahmni_pacs -F p -b -v > "/bahmni-backup/pacs_integrationdb_backup.sql" |
| 8 | Patient Images | Patient Photos captured from the registration page of Bahmni | /home/bahmni/patient_images | cp -a /home/bahmni/patient_images /bahmni-backup/ |
| 9 | Document Images | Documents uploaded for a patient from multiple modules like Patient Documents module, Form observations etc | /home/bahmni/document_images | cp -a /home/bahmni/document_images /bahmni-backup/ |
| 10 | Uploaded Results | Documents that are uploaded from OpenELIS during test result upload | /home/bahmni/uploaded_results | cp -a /home/bahmni/uploaded_results /bahmni-backup/ |
| 11 | Uploaded Files | Files that are uploaded from Admin Module of Bahmni | /home/bahmni/uploaded-files | cp -a /home/bahmni/uploaded-files /bahmni-backup/ |
| 12 | Clinical Forms JSON Files | The JSON files that are created by form builder module when defining form2 forms. Applicable only when Form-2 forms are used | /home/bahmni/clinical_forms | cp -a /home/bahmni/clinical_forms /bahmni-backup/ |
| 13 | DCM4CHEE Dicom Files | The dicom files captured and stored in the dcm4chee server archive | /home/bahmni/pacs_images/archive | cp -a /home/bahmni/pacs_images/archive/. /bahmni-backup/dcm4chee_archive |
| 14 | Bahmni Queued Reports Results Files | The result files of reports added to queue from the reports module | /home/bahmni/reports | cp -a /home/bahmni/reports /bahmni-backup/ |
모든 아티팩트를 수집하면 아래와 같은 디렉터리 구조가 됩니다. ls -al /bahmni-backup을 실행해 확인하십시오. DB 백업 .sql 파일에 head -n 100을 실행하고 다른 파일 디렉터리에 ls를 실행하여 백업이 올바른지도 검증하십시오.
이제 zip 또는 gzip으로 /bahmni-backup 백업 아티팩트 폴더를 압축하고 외장 하드 드라이브나 USB 메모리를 통해 새 서버로 복사할 수 있습니다.
새 서버 구성:
Getting Started on Docker 페이지의 사전 요구 사항에 따라 필요한 도구를 설치합니다. 주로 Docker, Docker Compose, Git을 설치한 다음 bahmni-docker 저장소를 복제합니다.
이전 구현의 백업 아티팩트를 복사합니다. 새 서버에서 위와 동일한 디렉터리 구조로 옮기고 필요하면 압축을 풉니다. 백업 아티팩트를 복사한 경로를 기록해 두십시오.
구현별 구성 사용
일반적으로 구현별 구성 파일의 변경 사항은 Git 같은 버전 관리 도구로 추적하는 것이 좋습니다. 무엇이 언제 누구에 의해 변경되었는지 추적하는 데 도움이 됩니다. 문서의 단계에 따라 Docker에서 구현별 구성을 사용하십시오. 참고: 경로나 구성 이미지 변수만 업데이트하고 docker compose up -d를 실행하여 서비스를 시작하지 마십시오.
팁: 마이그레이션을 시작해 시험하려면 문서의 로컬 개발 구성에 따라 .env의 CONFIG_VOLUME 값으로 <path_of_backup_artifacts_on_new_server>/bahmni_config를 사용하고 bahmni-config 서비스를 주석 처리할 수 있습니다. 그러면 위 백업 절차에서 백업한 구성을 사용합니다. 구성은 Git 저장소에 보관하는 것이 좋습니다.
이는 마이그레이션의 중요한 단계이므로 위에서 참조한 문서의 단계를 정확히 따랐는지 확인하십시오.
환경 구성 파일의 변수 업데이트
bahmni-docker/bahmni-standard 폴더의 .env 파일에는 Docker에서 Bahmni를 실행할 때 구성할 수 있는 모든 속성이 들어 있습니다. .env 또는 .env.dev를 선택하여 사용할 수 있습니다. .env에는 곧 출시 버전별 이미지 태그가 포함되고, .env.dev에는 모든 저장소의 메인라인 코드에서 빌드한 이미지를 가리키는 최신 태그가 포함됩니다.
기본 구성에는 데모 데이터베이스 이미지가 포함되므로 .env 파일에서 데이터베이스 구성 관련 변수 일부를 업데이트해야 합니다. 아래 표에 따라 값을 변경하십시오.
| Variable Name | Value to be updated | |
|---|---|---|
| 1 | TZ | The time zone where your previous instance was running. Example: Asia/Kolkata |
| 2 | OPENMRS_DB_IMAGE_NAME | mysql:8.0 |
| 3 | OPENELIS_DB_IMAGE_NAME | postgres:9.6 |
| 4 | ODOO_10_DB_IMAGE_NAME | postgres:9.6 |
| 5 | ODOO_DB_IMAGE_NAME | postgres:16.1 |
| 6 | OPENELIS_DB_NAME | clinlims |
| 7 | OPENELIS_DB_USER | clinlims |
| 8 | OPENELIS_DB_PASSWORD | clinlims |
Bahmni 애플리케이션 및 데이터베이스 복원
복원 스크립트 실행
복원 스크립트를 실행하기 전에 .env가 아닌 환경 파일을 사용하려면 bahmni-docker/bahmni-standard/restore_bahmni_standard.sh를 열어 BAHMNI_DOCKER_ENV_FILE 값을 수정하십시오.
bahmni-docker/bahmni-standard 디렉터리로 이동한 뒤 다음 명령으로 복원 스크립트를 실행합니다.
./restore_bahmni_standard.sh <restore-artifacts-folder-path>
Example: ./restore_bahmni_standard.sh /bahmni-backup --> Assuming you have backup-artifacts copied into /bahmni-backup directory<restore-artifacts-folder-path>는 이전 서버의 백업 데이터를 복사한 위치입니다. 참고: 디렉터리의 절대 경로를 입력하십시오.
복원 스크립트는 전달된 restore-artifacts-folder-path 디렉터리의 DB 백업 파일을 기준으로 데이터베이스 컨테이너를 하나씩 초기화합니다. 예를 들어 openmrsdb_backup.sql만 추가했다면 openmrsdb 컨테이너만 시작되고 데이터베이스가 복원됩니다.
그다음 복원 스크립트는 환자 이미지, 문서 이미지 등의 Bahmni 파일 시스템 백업을 필요한 볼륨 마운트에 불러옵니다.
DB backup file for $db_name not found at ${db_backup_file_path}. Skipping restore 또는 Source directory for $artifact_name does not exist or is empty. So skipping restore for $artifact_name. 같은 오류 로그가 표시될 수 있습니다. 해당 구성 요소를 사용하지 않거나 특정 디렉터리를 복원하지 않는다면 무시해도 됩니다.
복원 스크립트가 완료되면 docker ps -a로 실행 중인 컨테이너 목록을, docker volume ls로 생성된 볼륨 목록을 확인할 수 있습니다. 데이터베이스가 올바르게 복원되었는지 검증하려면 컨테이너에 exec로 접속한 뒤 데이터베이스에 연결해 확인하십시오.
OpenMRS 데이터베이스 복원을 검증하는 유용한 쿼리
아래 쿼리는 exec로 OpenMRS DB 컨테이너에 들어가 MySQL에 연결한 후 실행할 수 있습니다(docker compose exec -it openmrsdb bash).
--> List all tables (Approx 246 tables)
SHOW tables;
--> List all procedures in OpenMRS database. You will see entries showing names
SHOW PROCEDURE STATUS WHERE db = 'openmrs';
--> List Routine Information in OpenMRS database
SELECT routine_schema,routine_name,routine_type FROM information_schema.routines WHERE routine_schema = 'openmrs' ORDER BY routine_name;
---> Validate View Creation (You should see a query fetching information from concept related tables)
select VIEW_DEFINITION from information_schema.views where TABLE_NAME='concept_view';Bahmni 애플리케이션 구성 요소 시작
위 단계가 완료되면 데이터베이스와 Bahmni 파일이 복사되어 지정된 위치에 볼륨으로 마운트됩니다. 다음 단계는 애플리케이션 컨테이너를 시작하는 것입니다. 단계적으로 진행하는 것을 권장합니다.
EMR ?? ?? ??
Docker 기반 Bahmni 업그레이드 테스트의 첫 단계로 Bahmni 모듈을 포함한 OpenMRS, Bahmni Web, Appointments, Implementer Interface 등의 Bahmni EMR 구성 요소부터 시작합니다. 다음 명령으로 서비스를 시작할 수 있습니다.
docker compose --profile emr up -d ?? docker compose --profile emr --env-file <you env file name> up -d.
컨테이너가 부팅되고 필요한 마이그레이션이 실행될 때까지 기다리십시오. docker compose logs -f openmrs 또는 ./run-bahmni.sh 유틸리티 스크립트로 개별 컨테이너의 로그를 확인할 수도 있습니다.
애플리케이션은 https://localhost 또는 https://<machine-ip/public-ip>에서 접속할 수 있습니다. 구현별 구성에 따라 EMR 흐름을 검증하십시오.
모든 EMR/Clinical 흐름을 충분히 테스트했다면 필요에 따라 다른 서비스를 시작할 수 있습니다.
Reports ?? ?? ??
보고서 사용자 지정 SQL 디렉터리 변경: Docker 구성에서는 bahmni-config가 Reports 컨테이너의 /etc/bahmni-config에 마운트됩니다. 따라서 openmrs/apps/reports/reports.json 보고서 구성 파일에서 사용자 지정 SQL 보고서를 사용한다면 sqlPath 값을 /var/www/bahmni_config에서 /etc/bahmni_config로 변경하십시오.
다음 명령을 실행하여 Reports 서비스를 시작할 수 있습니다.
docker compose --profile reports up -d ?? docker compose --profile reports --env-file <you env file name> up -d.
애플리케이션은 https://localhost 또는 https://<machine-ip/public-ip>에서 접속할 수 있습니다. 이전 시스템과 새 시스템의 보고서 데이터를 비교해 검증하십시오.
OpenELIS ?? ?? ??
다음 명령을 실행하여 OpenELIS Lab Management 시스템을 시작할 수 있습니다.
docker compose --profile openelis up -d ?? docker compose --profile openelis --env-file <you env file name> up -d.
애플리케이션은 https://localhost/openelis 또는 https://<machine-ip/public-ip>/openelis에서 접속할 수 있습니다. Atom Feed를 통해 환자와 검사 주문이 올바르게 동기화되는지 검증하십시오.
Odoo ?? ?? ??
다음 명령을 실행하여 Odoo와 odoo-connect 서비스(EMR과 Odoo 간 통합 서비스)를 시작할 수 있습니다.
docker compose --profile odoo-10 up -d ?? docker compose --profile odoo-10 --env-file <you env file name> up -d.
애플리케이션은 https://localhost:8070 또는 https://<machine-ip/public-ip>:8070에서 접속할 수 있습니다. Atom Feed를 통해 환자와 견적이 올바르게 동기화되는지 검증하십시오.
방사선(PACS) 구성 요소 시작
방사선 구성 요소를 시작하기 전에 수행할 단계
- 애플리케이션을 시작하기 전에 pacs_integration 데이터베이스의 modality 테이블을 업데이트하여 Docker에서 실행되는 dcm4chee로 주문을 전송하도록 설정합니다.
- PACS Query 구성 업데이트
- OpenMRS에 로그인하고 Administration → Manage Modules에서 Pacs Query OMOD가 실행 중인지 확인합니다.
- Administration → Settings → PacsQuery로 이동하여 pacsConfig 속성을 찾습니다.
- 이 속성에 주문 정보를 가져올 PACS 서버 정보를 추가합니다. 형식은 <AETitle>@<Host>:<Port>입니다. 값을 DCM4CHEE@dcm4chee:11112로 설정하십시오.
애플리케이션 시작
다음 명령을 실행하여 DCM4CHEE와 pacs-integration 서비스를 시작할 수 있습니다.
docker compose --profile pacs up -d ?? docker compose --profile pacs --env-file <you env file name> up -d.
애플리케이션은 https://localhost/dcm4chee-web3 또는 https://<machine-ip/public-ip>/dcm4chee-web3에서 접속할 수 있습니다. Atom Feed를 통해 dcm4chee Modality Worklist가 올바르게 동기화되는지 검증하십시오.
이제 Bahmni Standard의 모든 구성 요소가 Docker에서 실행되어야 합니다. 운영 환경으로 전환하기 전에 모든 사용자 흐름과 Atom Feed 기반 시스템 동기화를 철저히 테스트하는 것이 좋습니다. 사전 운영 환경에서 복원을 여러 번 시험한 뒤 운영 환경으로 전환하십시오.
로컬, 테스트 또는 사전 운영 환경용 팁(운영 환경에서는 사용 금지)
예상대로 작동하지 않거나 처음부터 다시 시작하려면 docker compose --profile bahmni-standard down -v를 실행해 환경을 정리한 다음 복원 절차를 처음부터 다시 시작할 수 있습니다.
복원 중 문제가 발생하거나 오류를 만나거나 의견 또는 제안이 있다면 Bahmni Community Slack 또는 OpenMRS Talk 스레드로 문의하십시오. 커뮤니케이션 채널 및 도구(Discourse 및 Slack)
다음 단계: 컨테이너 데이터 및 파일 백업/복원(Docker)
중앙 집중식 로깅 구성(Docker)
하위 문서
Bahmni Wiki · CC BY-SA 4.0