지식그래프(Knowledge Graph)

[Virtuoso] virtuoso opensouce 7 docker 설치와 port 변경

송채채 2023. 3. 7. 14:03

목표

목표는 이미 virtuoso가 설치되어있는 컴퓨터에 하나 더 설치해서 다른 포트로 새로운 버투소를 운영하고 싶었다..
그래서 막연하게 다른 경로에 버투소를 설치하면 될 줄 알았지만 ㅜㅜ
소스코드 내에서 1111,8890을 이미 설정해놓았고 설치 후에 포트 변경은 가능하지만, 설치 진행할 때도 1111,8890을 체크하더라..
그래서 설치 도중 에러가 나서 이것저것 다 해보다가 소스코드로 설치하는 것은 포기함!

도커로 virtuoso 설치하고 포트 변경하기

새롭게 생각한 방법은 도커로 설치하기!

https://hub.docker.com/r/openlink/virtuoso-opensource-7/

# docker image 가져오기
$ docker pull openlink/virtuoso-opensource-7

# virtuoso.db, virtuoso.ini 등 설정파일을 볼륨 마운트할 폴더 생성
$ mkdir my_virtdb
$ cd my_virtdb

# docker run으로 필요한 설정 같이 해주기
$ docker run \
    --name my_virtdb \
    --interactive \
    --tty \
    --env DBA_PASSWORD=비밀번호 \
    --publish 1122:1111 \ # 호스트(로컬)은 1122로 열리고, 컨테이너 내부는 1111로 접속됨
    --publish  8899:8890 \ # 호스트(로컬)은 8899로 열리고, 컨테이너 내부는 8890으로 접속됨
    --volume 마운트할경로:/database \
    openlink/virtuoso-opensource-7:latest

이렇게 하면, 윈도우 10기준으로 virtuoso.exe로 설치한 virtuoso와 docker로 설치한 virtuoso가 모두 작동한다!

virtuoso.exe는 8890포트로 접속되고, docker virtuoso는 내가 설정한 8899포트로 접속가능

볼륨 마운트와 마이그레이션

docker run 전에 이미 virtuoso.db나 .ini 파일을 함께 마이그레이션 할 생각이라면

1. volume 마운트하는 경로에 마이그레이션 또는 복제할 virtuoso.db를 복사해놓는다. 

2. 해당 경로와 docker 를 --volume 옵션으로 마운트한다.

 

Persistent storage(공식 홈페이지의 설명)
Virtuoso 데이터베이스 에 대한 변경 사항을 유지하려면 데이터베이스 문서를 호스트 파일 시스템에 저장해야 합니다.
도커 이미지는 파일 시스템의 로컬 디렉터리에 쉽게 매핑할 수 있는 볼륨을 노출 합니다. /database이 디렉터리가 비어 있으면 도커 이미지는 매핑된 디렉터리에 이니셜을 넣은 다음 새 데이터베이스 생성을 진행합니다.

즉, 볼륨 마운트한 로컬 폴더에 .db나 .ini 파일이 있으면 이 파일을 대상으로 설치를 진행하고, 없다면 새로 생성한다. 

그래서 미리 마이그레이션할 파일을 복사해놓으면 설치 시 자동으로 마이그레이션됨!

 

도커로 설치한 virtuoso에 bulk load하기

https://community.openlinksw.com/t/how-to-bulk-load-data-into-a-virtuoso-docker-instance/3248 

 

How to Bulk Load Data into a Virtuoso Docker Instance

How to Bulk Load Data into a Virtuoso Docker Instance Copyright © 2022 OpenLink Software support@openlinksw.com Table of Contents Introduction Downloading and running the example Explanation The docker-compose.yml script The ./data directory Notes on the

community.openlinksw.com

1. 볼륨 마운트 한 로컬 경로에 /data 폴더 생성하여 업로드할 파일 복사해놓기

2. namedgraph 설정할 수 있게 폴더마다 global.graph만들기

2. 1111 포트로 접속해서 ld_dir_all(), rdf_loader_run() 

...자세한 설명은 테스트 하고 적어볼게요

반응형