コミュニティの皆さん、こんにちは!
最近では、誰もが Github、GitLab、bitbucket などのリポジトリにプロジェクトのソースコードを保管していると思います。 InterSystems IRIS プロジェクトについても同様で、Open Exchange にチェックされています。
InterSystems Data Platform で特定のリポジトリの操作を開始または継続するたびに、何をしているでしょうか?
ローカルの InterSystems IRIS マシン、プロジェクト用の環境のセットアップ、ソースコードのインポートが必要です。
つまり、すべての開発者は以下を実行しています。
- リポジトリからコードをチェックアウトする。
- ローカル IRIS インストールをインストール/実行する。
- プロジェクト用の新しいネームスペース/データベースを作成する
- コードをこの新しいネームスペースにインポートする。
- すべての残りの環境をセットアップする。
- プロジェクトのコーディングを開始/継続する。
リポジトリを Docker 化すると、この手順は次の 3 つのステップに短縮できます。
- リポジトリからコードをチェックアウトする。
- docker-compose build を実行する。
- プロジェクトのコーディングを開始/継続する。
メリット: 実行に数分かかる上、頭が痛くなるようなステップ 3、4、5 を行わなくて済みます。
次の数ステップで、(ほぼ)すべての InterSystems リポジトリを Dcoker 化できます。 では、やってみましょう!
リポジトリを Docker 化する方法は?その意味は?
基本的に、マシンに Docker をインストールし、コードと環境をコンテナに構築し、そのコンテナを Docker で実行すれば、最初に開発者が導入した方法で動作するようにするという考えです。 「OS のバージョンは何?」や「この IRIS インストールには他に何かあった?」といった疑問はありません。
毎回、クリーンなページ(またはクリーンな IRIS コンテナ)を使用して環境(ネームスペース、データベース、ウェブアプリ、ユーザー/ロール)がセットアップされ、作成したばかりのクリーンなデータベースにコードがインポートされます。
この「Docker 化」手順によって、現在のリポジトリに大きな悪影響が及ぶでしょうか?
及びません。 リポジトリのルートに独自にセットアップできるいくつかのツールに従った 2~3 個の新しいファイルを追加する必要があります。
前提条件
docker をダウンロードしてインストールします。
IRIS docker イメージをダウンロードしてインストールします。 この例では、WRC-preview からダウンロードできる完全な InterSystems IRIS プレビュー(iris:2019.1.0S.111.0)を使用します。詳細をご覧ください。
キーを必要とするインスタンスを操作する場合は、常に使用する場所に iris.key を配置します。 私の場合は、Mac の Home ディレクトリに置きました。
リポジトリの Docker 化
リポジトリを Docker 化するには、リポジトリのルートフォルダに 3 つのファイルを追加する必要があります。
こちらは、ISC-DEV プロジェクトの Docker 化されたレポジトリの例です。これは、IRIS データベースからソースコードをインポート/エクスポートするのに役立ちます。 このリポジトリには、以下に説明する追加の Dockerfile、docker-compose.yml、および installer.cls が含まれています。
まず、Dockerfile です。これは、docker-compose build コマンドで使用されます。
Dockerfile
この Dockerfile は installer.cls とソースコードをリポジトリの /cls フォルダから /src フォルダ、そしてコンテナにコピーします。
また、いくつかの構成設定も実行します。これにより、管理者ユーザーに %All ロールと無期限のパスワード「SYS」が付与され、OS レベルの認証が導入され、%Installer が実行されます。
%Installer とは何でしょうか?
Class App.Installer
{
XData MyInstall [ XMLNamespace = INSTALLER ]
{
<Manifest>
<Default Name="NAMESPACE" Value="ISCDEV"/>
<Default Name="DBNAME" Value="ISCDEV"/>
<Default Name="APPPATH" Dir="/opt/app/" />
<Default Name="SOURCESPATH" Dir="${APPPATH}src" />
<Default Name="RESOURCE" Value="%DB_${DBNAME}" />
<Namespace Name="${NAMESPACE}" Code="${DBNAME}-CODE" Data="${DBNAME}-DATA" Create="yes" Ensemble="0">
<Configuration>
<Database Name="${DBNAME}-CODE" Dir="${APPPATH}${DBNAME}-CODE" Create="yes" Resource="${RESOURCE}"/>
<Database Name="${DBNAME}-DATA" Dir="${APPPATH}${DBNAME}-DATA" Create="yes" Resource="${RESOURCE}"/>
</Configuration>
<Import File="${SOURCESPATH}" Recurse="1"/>
</Namespace>
</Manifest>
}
ClassMethod setup(ByRef pVars, pLogLevel As %Integer = 3, pInstaller As %Installer.Installer, pLogger As %Installer.AbstractLogger) As %Status [ CodeMode = objectgenerator, Internal ]
{
Return ##class(%Installer.Manifest).%Generate(%compiledclass, %code, "MyInstall")
}
}
これは、ネームスペース/データベース ISCDEV を作成し、ソースフォルダである -/src からコードをインポートします。
次は、docker-compose.yml ファイルです。これは、docker-compose up コマンドでコンテナを実行するときに使用されます。
version: '2.4' services: iris: build: . restart: always ports: - 52773:52773 volumes: - ~/iris.key:/usr/irissys/mgr/iris.key
この構成によって、Docker に対し、ホストのどのポートで IRIS の動作が期待されるかを指示します。 最初(52773)はホスト、2 つ目はコンテナのコンテナ内部ポート(52773)です。
volumes セクションでは、docker-compose.yml は、IRIS が検索するコンテナ内でマシン上の iris キーへのアクセスを提供します。
- ~/iris.key:/usr/irissys/mgr/iris.key
このリポジトリでコーディングを始めるには、以下を実行します。
- 任意のローカルディレクトリにリポジトリを Clone/git pull します。
2. このディレクトリでターミナルを開き、以下を実行します。
user# docker-compose build
これによりコンテナがビルドされます。
- プロジェクトで IRIS コンテナを実行します。
user# docker-compose up -d
お好きな IDE を開いて、localhost://52773 のサーバーに接続し、InterSystems IRIS Data Platform で作業を始めましょう!;)
この 3 つのファイルを使用して、リポジトリを Docker 化できます。 Dockerfile のソースコードに適切な名前、Installer.cls に適切なネームスペースを付けて、docker-compose.yml に iris.key を配置するだけで、InterSystems IRIS を使った日常の開発で、Docker コンテナを活用することができます。