構築手順
1. 目的
本ドキュメントはFRUCtoS配布パッケージを用いて、FRUCtoSを動作させる環境を構築するための手順を説明した資料です。
本ドキュメントはソフトウェアのインストール、OSの環境設定など基本的なコンピュータ管理の知識とその操作権限をもつ方を対象としています。
また、本書ではDockerを用いた環境構築手順を中心に解説しているため、Dockerの基本的な知識があるとより望ましいです。
例としてDockerを実行環境とする場合を記載しています。 他のDocker互換のコンテナ実行環境をお使いの方は、適宜読み替えてください。 設定ファイルも適宜書き換えてください。
2. FRUCtoSの全体像
本パッケージにより構成されるFRUCtoSの概念図と利用するTCPポートアドレス及びURLを下記に示します。
本配布パッケージに予め設定されている各種情報や本書で示される設定情報は動作確認のためのものであり、実運用を考慮したものではありません。
特に、Keycloakを用いたGatewayの構成はあくまで参考実装であり、同梱のKeycloak-Gatewayはその実装サンプルです。 Keycloakを使用してFRUCtoSをご利用の際は、管理者アカウントのパスワード変更や実装先に合わせた構成の見直し等、セキュリティ対策を十分に行ってください。 使用時に発生したトラブルにつきまして、利用者が一切の責任を負うものとします。
全体の概念図
利用するTCPポートアドレスとURL
3. FRUCtoSを動作させるのに必要な環境
3.1. サーバ
3.1.1. OS
FRUCtoSは以下のOSで動作確認済みです。これらのOSを利用することを推奨します。
- Windows 11 Pro
- macOS 14.3 Appleシリコン
- Ubuntu 22.04 LTS
3.1.2. Docker
本パッケージで提供されるFRUCtoSはDockerコンテナ上での動作を前提としています。 Dockerのインストールや設定についてはDocker設定手順を御覧ください。
docker-composeのバージョンがv2.0.0以上の場合、以降のドキュメントサイトに記載されているdocker-compose
コマンドをdocker compose
コマンドに読み替えて実行してください。
また以下のファイル内のコマンドについてもdocker-compose
コマンドをdocker compose
コマンドに修正した後ご利用ください。
・ 『dist/keycloak/deploy_all.sh』
・ 『dist/keycloak/deploy_all_win.bat』
・ 『dist/log-tools/startupErrorDetection.bat』
・ 『dist/log-tools/startupErrorDetection.ps1』
・ 『dist/log-tools/startupErrorDetection.sh』
3.2. クライアント
FRUCtoSはHL7FHIR規格のREST APIサーバです。動作確認にはOAuth2認証に対応したREST API Clientが必要です。本書ではPostmanを用いた動作確認を解説しています。
4. FRUCtoSの構築手順
4.1. 構築から動作確認までの流れ
FRUCtoSの構築から動作確認までの手順を以下に図示します。
4.2. Dockerのインストールと設定
Docker設定手順を参照してください。
4.3. FRUCtoSの配置
配 布パッケージを解凍するとfructos-x.x.x
(x.x.x
の部分はバージョン番号)というフォルダができます。以下の説明ではこのfructos-x.x.x
というフォルダを$WORK
で表します。
配布パッケージには以下のものが含まれます。
ファイル名の「?.?.?」にはバージョンが設定されます。例)gateway-0.0.2-SNAPSHOT.jar
資料 | 場所 |
---|---|
KeycloakとGatewayのdocker-composeファイル | 『dist/keycloak/docker-compose.yml』 |
Gateway用のDockerfile | 『dist/keycloak/Dockerfile』 『dist/keycloak/Dockerfile.keycloak』 |
Keycloakの設定ファイル | 『dist/keycloak/realm-export.json』 |
gatewayのjarファイル | 『dist/keycloak/gateway-?.?.?-SNAPSHOT.jar』 |
postmanの設定ファイル | 『dist/keycloak/client.postman_collection.json』 |
Docker起動用スクリプト | |
(mac) | 『dist/keycloak/deploy_all.sh』 |
(windows) | 『dist/keycloak/deploy_all_win.bat』 |
FRUCtoS構築用配布物 | dist/fructos_docker フォルダ内 |
利用しているOSSのライセンスファイル | license フォルダ内 |
Docker コンテナログ確認スクリプト | dist/log-tools フォルダ内 |
管理システム構築用配布物 | dist/fructos_admin_docker フォルダ内 ※構築手順については管理システムの構築手順を御覧ください。 |
管理システム利用時のオプション資材 | dist/fructos_admin_docker_attachment フォルダ内 |
アダプタ開発用配布物 | dist/repository-adapter-sample フォルダ内 |
ダンプツール配布物 | dist/dump-tools フォルダ内 および dist/dump-tools-auditevent フォルダ内 |
dist/
以下にFRUCtoSの実行環境を構築するために必要なファイルが配置されています。
4.4. Dockerコンテナ作成と起動
4.4.1. FRUCtoSサーバ
Dockerイメージ・コンテナの作成と起動
$WORK/dist/fructos_docker
フォルダへ移動し、docker-compose
コマンドにより、Dockerイメージ・コンテナを作成します。
FRUCtoSサーバはDB管理システムとしてPostgreSQLを使用します。DBの接続情報は環境変数として .env
ファイルに記載されていますので、当ファイルを編集することで変更できます。
コンテナのポート番号はdocker-compose.yml
を編集することで変更できます。
管理システムを利用する場合には8. 管理システム利用時の追加作業の手順を先に実施して下さい。
過去にインストールしたFRUCtoSサーバのDocker環境が残っている場合には7.環境削除を参照して下さい。
セキュリティ上の観点から、DBの接続情報やコンテナのポート番号の変更をお勧めします。
.env
ファイルの初期値FRUCTOS_PSQL_USER=fructos ・・・(ユーザ名)
FRUCTOS_PSQL_PASSWORD=fructos#2020 ・・・(パスワード)
FRUCTOS_PSQL_DB=fructos ・・・(DB名)
FRUCTOS_AUDIT_PSQL_USER=fructos_audit ・・・(監査ログのユーザ名)
FRUCTOS_AUDIT_PSQL_PASSWORD=fructos!audit#2020 ・・・(監査ログのパスワード)
FRUCTOS_AUDIT_PSQL_DB=fructos_audit ・・・(監査ログのDB名)
FRUCTOS_CONFIGURATION_PSQL_USER=fructos_configuration ・・・(設定永続化のユーザ名)
FRUCTOS_CONFIGURATION_PSQL_PASSWORD=fructos!configuration#2020 ・・・(設定永続化のパスワード)
FRUCTOS_CONFIGURATION_PSQL_DB=fructos_configuration ・・・(設定永続化のDB名)tomcat/config/environment
ファイルの初期値(※管理システム利用時)
※.env
ファイルと同様docker-compose.yml
ファイルの初期値(抜粋)services:
db:
# ...
tomcat:
# ...
ports:
- "8099:8080"
# ...docker-compose
による起動Shelldocker-compose up -d --build
Dockerコンテナの起動確認
docker-compose ps
コマンドでコンテナの起動状態を確認します。なお、本ドキュメントではdocker-compose 1.xでの表示例を掲載しており、docker-compose
のバージョンによっては表示形式の異なる場合があります。お使いのバージョンに合わせて適宜読み替えてください。
docker-compose ps
Name Command State Ports
---------------------------------------------------------------------------------------------------------------------------------------
FRUCtoS_postgres docker-entrypoint.sh -c co ... Up 5432/tcp
FRUCtoS_postgres_audit docker-entrypoint.sh -c co ... Up 5432/tcp
FRUCtoS_postgres_configuration docker-entrypoint.sh -c co ... Up 5432/tcp
FRUCtoS_tomcat catalina.sh run ... Up 0.0.0.0:8099->8080/tcp, :::8099->8080/tcp
Stateが全てUpになっていればコンテナの起動成功です。
Portsの->
の左側の値は、「4.4.1. FRUCtoSサーバ」の「Dockerイメージ・コンテナの作成と起動」のdocker-compose.yml
で設定したポート番号になります。
FRUCtoSサーバの起動確認
以下のdocker-compose logs
コマンドでFRUCtoSサーバの起動状態を確認します。
docker-compose logs -f
....
FRUCtoS_tomcat | 08-Oct-2021 17:36:08.729 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in [57307] milliseconds
FRUCtoS_tomcatのServer startupが表示されていれば起動完了です。Ctrl+C
で止めてください。
Dockerコンテナのログ確認
Dockerコンテナのログにエラーが出力されていないか確認します。
$WORK/dist/fructos_docker
フォルダで確認用スクリプトを実行してください。
確認用スクリプトは$WORK/dist/log-tools
に配置されています。パス指定、或いは必要に応じてコピーして使用してください。
以下のDockerコンテナのログ確認の手順は相対パス指定で実行している例です。
Windows
PowerShellスクリプトを実行して確認します。
PowerShell -f ..\log-tools\startupErrorDetection.ps1
環境によりPowerShellスクリプトが実行出来ない場合は、必要に応じてPowerShellスクリプトの実行に先立ち、 以下の「Windowsの実行ポリシーの設定」や「PowerShellスクリプトのプロパティ変更」を行ってください。
- 実行ポリシーの設定
『y』を入力してください。PowerShell
Set-ExecutionPolicy RemoteSigned -Scope Process
- プロパティ変更
startupErrorDetection.ps1
ファイルの『セキュリティ』を次の手順で許可にしてください。startupErrorDetection.ps1
ファイルをエクスプローラーで選択し、マウスボタン右クリックでプロパティを表示します。- 『全般』タブの『セキュリティ:』の『許可する(K)』をチェックします。
PowerShellの代わりにバッチファイルによる実行も可能です。
但しバッチファイル中で使用しているfindstr
コマンドの制限のためログ出力が多い場合は正常に実行できません。
..\log-tools\startupErrorDetection.bat
Linux または macOS
sh ../log-tools/startupErrorDetection.sh
結果確認
以下のメッセージが出力されていればサーバ起動時にエラーメッセージは出力されていません。
docker container: fructos_docker エラーは検出されませんでした
4.4.2. Keycloak Gateway
Keycloak Gatewayの設定はFRUCtoSサーバの起動確認ができてから実施します。
Dockerイメージ・コンテナの作成と起動
Keycloak Gatewayの配置フォルダ$WORK/dist/keycloak
へ移動しての作業となります。
Keycloak Gatewayの起動用のスクリプトとしてLinuxおよびMacはdeploy_all.sh
、 Windowsはdeploy_all_win.bat
がありますので、これを使用します。
しかし、FRUCtoSがKeycloak Gatewayとは異なるマシンにある場合や、 ネットワークインタフェースが複数ある場合には利用できませんので、
環境変数DOCKERHOST
を設定し、 FRUCtoSサーバと同様にdocker-compose
コマンドでDockerイメージ・コンテナを作成および起動する必要があります。
スクリプトによる起動
- Windows
コマンドプロンプト
deploy_all_win
- LinuxまたはmacOS
Shell
sh ./deploy_all.sh
FRUCtoSがKeycloak Gatewayとは異なるマシンにある場合、ネットワークインタフェースが複数ある場合、あるいはifconfig
コマンドが利用できない環境の場合は、
FRUCtoSのあるマシンのIPv4アドレス、あるいは利用したいネットワークアダプタに設定されているIPv4アドレスを環境変数DOCKERHOST
に設定してください。
Keycloak Gatewayの配置フォルダに.env
ファイルを作成し、そこに下記のように記載します。
.env
ファイルDOCKERHOST=<IPv4アドレス>
docker-compose
コマンドによるDockerイメージ、コンテナの作成
docker-compose -p keycloak up -d --build
Dockerコンテナの起動確認
docker-compose ps
コマンドでコンテナの起動状態を確認します。
docker-compose -p keycloak ps
Name Command State Ports
--------------------------------------------------------------------------------------------------------------------------
keycloak_gateway /bin/sh -c /wait && java - ... Up 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp
keycloak_keycloak /opt/jboss/tools/docker-en ... Up 8080/tcp, 8443/tcp, 0.0.0.0:8090->8090/tcp, :::8090->8090/tcp
keycloak_postgres docker-entrypoint.sh postgres Up 5432/tcp
Stateが全てUpになっていればコンテナの起動成功です。
Keycloak Gatewayの起動確認
以下のdocker-compose logs
コマンドでFRUCtoSサーバの起動状態を確認します。
docker-compose -p keycloak logs -f
....
keycloak_gateway | 2021-10-08 18:31:38.353 INFO 1 --- [main] jp.fructos.gateway.GatewayApplication : Started GatewayApplication in 40.8 seconds
keycloak_gatewayのStarted GatewayApplicationが表示されていれば起動完了です。Ctrl+C
で止めてください。
4.5. 動作確認用クライアントのインストールと設定
動作確認にはREST APIクライアントであるPostmanを使用します。
クライアントはKeycloak GatewayやFRUCtoSとは別のマシンへのインストールも可能ですが、本手順書では同じマシン上にインストールします。
PostmanはWebブラウザ上で動作するWebバージョンとWindows, macOS, Linux用のデスクトップアプリケーションがあります。Webバージョンはユーザ登録が必用ですが、インストール不要です。
デスクトップアプリケーションは、ユーザ登録は不要ですがインストールが必要です。本書ではデスクトップアプリケーションを用います。