Denodo Platform をサクッと Docker で構築/体験する

こんにちは！インサイトテクノロジーの松尾です。

本投稿では、データ仮想化を活用した論理的なデータ統合、データ管理、データ配信のソリューションである Denodo Platform をサクッと Docker を使って構築する方法を紹介します。

Denodo を触ってみたいけれどインストールが面倒だなと思っていた方！ぜひ Docker を使ってサクッと試してみてください。

## Denodo Platform とは

Denodo Platform は、データ仮想化を活用した論理的なデータ統合、データ管理、データ配信のソリューションです。国内でも大手企業を中心に多くの企業で採用されています。

https://www.denodo.com/ja/denodo-platform/denodo-platform?utm_source=partner_lead_InsightTech

https://www.denodo.com/ja/press-release/2022-08-31/denodo-japan-momentum.html2022-08-31/denodo-japan-momentum.html?utm_source=partner_lead_InsightTech

## Denodo Platform のコンテナ提供

Denodo では、通常のインストールイメージに加え、コンテナでも提供しています。

https://community.denodo.com/docs/html/browse/9.1/en/platform/installation/preinstallation_tasks/hardware_requirements/hardware_requirements#running-the-denodo-platform-on-docker?utm_source=partner_lead_InsightTech

https://community.denodo.com/docs/html/document/9.1/en/Denodo%20Platform%20Container%209%20QuickStart%20Guide?utm_source=partner_lead_InsightTech

インストーラーは GUI ベースのものが提供されており、インストール作業自体は難しくありませんが、コンテナでサクッと試したいというケースもあると思います。

また、Denodo の公式チュートリアルでも、コンテナの利用が「オススメ」となっています。

https://community.denodo.com/tutorials/browse/installation/index#2?utm_source=partner_lead_InsightTech

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3480312/2d9d29ec-6935-e2ab-a1aa-a3bbd4febb1b.png)

ということで、今回さっそく、コンテナでの利用を試してみました。

実際にやってみた感想ですが、Denodo を触ってみたいけれどインストールが面倒だなと思っていた方には、とてもおすすめだと思います。

## 試した環境

Windows 11 の WSL2 環境で試しました。
* Windows 11 24H2

```bash
$ cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04.3 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.3 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy

$ docker --version
Docker version 27.4.0, build bde2b89
```

* Denodo Express (無料版)

## コンテナベースの Denodo のインストール

ではさっそく、先ほどのチュートリアルページに従ってコンテナベースの Denodo Express を起動してみましょう。

https://community.denodo.com/tutorials/browse/installation/index#2?utm_source=partner_lead_InsightTech

また、本投稿では、いろんなデータソースが含まれていてテストに利用しやすい、Denodo Community Lab Environment もセットアップします。

https://github.com/denodo/denodocommunity-lab-environment/tree/master

### Get a key for the Denodo Container Registry: コンテナレジストリを使用するためのキーを取得

まず、コンテナレジストリへアクセスするためのキーが必要となります。Denodo アカウントが必要となるので、なければ作成してください。 https://harbor.open.denodo.com にアクセスできたでしょうか？

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3480312/8eed401c-ad23-13ad-e89f-92f49fc919b6.png)

続いて、右上のユーザー名から Profile を選択し、CLI secret をコピーします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3480312/74e9b3b7-7c2d-d495-9fd4-7c21d98e3d72.png)

### 認証情報を使ってレジストリにLogin: Configure your CLI secret in Docker

認証情報 ( Username と CLI secret ) を使ってレジストリに Login します。

```bash
$ docker login harbor.open.denodo.com
Username: xxxxxxxx@yyyyy.co.jp
Password:
WARNING! Your password will be stored unencrypted in /home/xxxxxxx/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credential-stores

Login Succeeded
```

### Denodo Express のライセンスの入手

以下にアクセスして Denodo Express のライセンス (無料) を入手します。

https://community.denodo.com/express/download-license-9.0?utm_source=partner_lead_InsightTech

### Denodo Community Lab Environment のダウンロード

Denodo Community Lab Environment をクローンします。

```bash
$ git clone https://github.com/denodo/denodocommunity-lab-environment.git
Cloning into 'denodocommunity-lab-environment'...
remote: Enumerating objects: 756, done.
remote: Counting objects: 100% (61/61), done.
remote: Compressing objects: 100% (42/42), done.
remote: Total 756 (delta 25), reused 45 (delta 18), pack-reused 695 (from 1)
Receiving objects: 100% (756/756), 184.10 MiB | 13.11 MiB/s, done.
Resolving deltas: 100% (307/307), done.
Updating files: 100% (238/238), done.
```

### 環境ファイルの修正

`lab-environment-containers/build/.env` ファイルを自分の環境に合わせて修正します。

* DENODO_VERSION を確認
* DENODO_SA_LIC にライセンスファイルへのパスを設定

また、GUIを日本語化したい場合は、以下の `～_CUSTOM_LANG` を `ja` に変更しましょう。※デフォルトは `en` になっています。


```
# Language of the Web Tools
# =============================
DENODO_DS_CUSTOM_LANG_DIR=../res/denodo/files/custom-lang/design-studio
DENODO_DS_CUSTOM_LANG=ja
DENODO_DC_CUSTOM_LANG_DIR=../res/denodo/files/custom-lang/data-catalog
DENODO_DC_CUSTOM_LANG=ja
```

`lab-environment-containers/build/.env` ファイルを修正したら以下のコマンドで起動します。

```bash
$ cp .env.template .env
$ vi .env
$ diff .env.template .env
15c15
< DENODO_SA_LIC=../res/denodo/license/
---
> DENODO_SA_LIC=../res/denodo/license/denodo-express-lic-9-202512.lic
62c62
< DENODO_DS_CUSTOM_LANG=en
---
> DENODO_DS_CUSTOM_LANG=ja
64c64
< DENODO_DC_CUSTOM_LANG=en
---
> DENODO_DC_CUSTOM_LANG=ja
$ docker compose --profile denodo --profile ds up
```

最初は様々なビルドプロセスが走ります。`docker ps` コマンドの実行結果は以下のようになります。

```bash
$ docker ps
CONTAINER ID   IMAGE                                                          COMMAND                  CREATED         STATUS                   PORTS

                                                                 NAMES
80de561890d8   httpd:2.4.59-alpine                                            "httpd-foreground"       4 minutes ago   Up 4 minutes             0.0.0.0:1080->80/tcp, [::]:1080->80/tcp
                                                                 denodocommunity-lab-environment-httpd
8057aab4d9d1   postgres:12-alpine                                             "docker-entrypoint.s…"   4 minutes ago   Up 4 minutes (healthy)   5432/tcp, 0.0.0.0:15432->15432/tcp, :::15432->15432/tcp
                                                                 denodocommunity-lab-environment-metadata
32c63684901e   harbor.open.denodo.com/denodo-express/denodo-platform:latest   "/opt/denodo/tools/c…"   4 minutes ago   Up 4 minutes (healthy)   7998-8000/tcp, 8998-9000/tcp, 0.0.0.0:9090->9090/tcp, :::9090->9090/tcp, 9097-9099/tcp, 0.0.0.0:9994->9994/tcp, :::9994->9994/tcp, 9995/tcp, 0.0.0.0:9996-9997->9996-9997/tcp, :::9996-9997->9996-9997/tcp, 9998/tcp, 10091/tcp, 0.0.0.0:9999->9999/tcp, :::9999->9999/tcp   denodocommunity-lab-environment-vdp
2eb85a948af9   harbor.open.denodo.com/denodo-express/denodo-platform:latest   "/opt/denodo/tools/c…"   4 minutes ago   Up 4 minutes (healthy)   7998-8000/tcp, 8998-9000/tcp, 9097-9099/tcp, 9995-9999/tcp, 10091/tcp, 0.0.0.0:29090->9090/tcp, [::]:29090->9090/tcp
                                                                 denodocommunity-lab-environment-dc
41c8162f673a   mongo:7.0.8                                                    "docker-entrypoint.s…"   4 minutes ago   Up 4 minutes             0.0.0.0:27017->27017/tcp, :::27017->27017/tcp
                                                                 denodocommunity-lab-environment-mongo
7987e3b7bd22   1000kit/apacheds                                               "/opt/run.sh"            4 minutes ago   Up 4 minutes             0.0.0.0:10389->10389/tcp, :::10389->10389/tcp
                                                                 denodocommunity-lab-environment-apacheds
89a0a8e0519f   imega/graphql-playground:0.0.3                                 "docker-entrypoint.s…"   4 minutes ago   Up 4 minutes             0.0.0.0:4000->4000/tcp, :::4000->4000/tcp
                                                                 denodocommunity-lab-environment-graphql-playground
901610138c29   harbor.open.denodo.com/denodo-express/denodo-platform:latest   "/opt/denodo/tools/c…"   4 minutes ago   Up 4 minutes (healthy)   7998-8000/tcp, 8998-9000/tcp, 9097-9099/tcp, 9995-9999/tcp, 10091/tcp, 0.0.0.0:19090->9090/tcp, [::]:19090->9090/tcp
                                                                 denodocommunity-lab-environment-ds
fe5a5afd5f61   tomcat:8.5.82-jdk8-openjdk                                     "catalina.sh run"        4 minutes ago   Up 4 minutes             0.0.0.0:8080->8080/tcp, :::8080->8080/tcp
                                                                 denodocommunity-lab-environment-tomcat
8b1cc914a4a6   mariadb:11.3.2                                                 "docker-entrypoint.s…"   4 minutes ago   Up 4 minutes             0.0.0.0:3306->3306/tcp, :::3306->3306/tcp
                                                                 denodocommunity-lab-environment-mariadb
c5a3562d0af5   postgres:12-alpine                                             "docker-entrypoint.s…"   4 minutes ago   Up 4 minutes             0.0.0.0:5432->5432/tcp, :::5432->5432/tcp
                                                                 denodocommunity-lab-environment-postgres
```

一通りメッセージが出力されたらアクセスしてみましょう。

* URL: http://localhost:19090/denodo-design-studio/
* user: admin
* password: admin
* vdp: //vdp:9999/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3480312/b26e45f0-7487-10d4-2489-98a335bd923b.png)

ログインできました！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3480312/66a526f2-a183-b25e-96c6-0179402ec9e3.png)

そして、試しに、Denodo Community Lab Environment のデータソースの一つに接続してみます。

データソースの追加で以下の情報を選択/入力してテスト接続してみましょう。

* Select Data Source: JDBCデータソース
* Name: ds_crm (任意の名称)
* Database URL: jdbc:mariadb://mariadb:3306/crm
* User: root
* Password: admin

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3480312/281513ab-452d-6b42-b2f6-a9915f8373b8.png)

詳細タブにて以下を入力します。

* Driver class path: select mariadb-2.7
* Driver class: org.mariadb.jdbc.Driver

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3480312/d75fa92d-f987-a619-233e-10e0b7123ac3.png)

「コネクションをテスト」を選択すると、接続できることが確認できました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3480312/9076d128-6279-bda0-8a66-14fe18350d26.png)

もちろん Base View の作成とクエリーの実行もできることが確認できました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3480312/426a5fc7-aec5-4ca4-e788-c7cbc1856776.png)

その他の Denodo の基本操作については、チュートリアルを参照するとわかりやすいと思います。

https://community.denodo.com/tutorials/?utm_source=partner_lead_InsightTech

## Denodo Community Lab Environment (コンテナ)で利用可能なデータソース

Denodo Community Lab Environment (コンテナ)で利用可能なデータソースは、以下を参照ください。

https://github.com/denodo/denodocommunity-lab-environment/tree/master/lab-environment-containers#data-sources

## おわりに

Denodo Platform のコンテナベースの起動を行い、Denodo Community Lab Environment のデータソースの一つに接続するところまで確認を行いました。簡単に起動と動作確認を行えることが確認できたと思います。Docker での利用は、利用までの手数を少なくできるのはもちろん、削除も簡単というのもポイントだと思います。ぜひコンテナを利用して Denodo をお試しください。

### もう少し詳しく知りたい方へ

弊社インサイトテクノロジーでは Denodo 社のパートナーとして Denodo Platform の紹介、販売、導入などを行っています。Denodo Platform に興味を持たれた方はぜひ弊社または Denodo 社までお問い合わせください。

https://www.insight-tec.com/products/denodo/

また、「これからデータ統合基盤を整備していきたい！」「どういった形でデータを統合していったらいいか迷っているので相談したい！」など、これからのデータ基盤整備のお困りごとや、「すでにこういうことをしているんだけどココをなんとかしたい！ (例えば Snowflake に SAP からリアルタイムデータを持ってきたい)」などについてもぜひご相談いただければと思います。

https://www.insight-tec.com/products/consulting/