LoginSignup
1
0

YellowfinをDockerコンテナで動かす最速の手順

Last updated at Posted at 2022-05-24

Yellowfin が Dockerに正式対応してから2年近くが経過し、実際に本番環境で採用される事例も非常に多くなってきました。
本記事では、興味はあるんだけど情報が少なくて……という方向けに、DockerでYellowfinを動かす手順を解説します。
なお、Yellowfinのオンラインマニュアルに詳細なインストール手順の記事があるので、正確なところはそちらをご確認ください。ここではあくまでわかりやすく簡潔に記述していきます。

事前準備

なにはともあれ Dockerをインストールしなくてはなりません。具体的には以下の2つが必要です。

  • Docker Engine
  • Docker Compose

WindowsまたはMacにインストールするのであれば、Docker Desktopを利用するのが最も簡単です。
Docker DesktopにはEngineとComposeの両方が含まれているので、個別にインストールする必要がありません。

使用する Yellowfinイメージの選択

公式に配布されているイメージには以下の2種類があります。

  • Yellowfin オールインワンイメージ(yellowfin-all-in-one)
  • Yellowfin アプリケーション限定イメージ(yellowfin-app-only)

前者のオールインワンイメージには、Yellowfinのアプリケーションとリポジトリデータベース(組み込みの PostgreSQL)の両方が含まれています。
オールインワンイメージはデモやPOC、サンドボックス等の簡易な用途を想定しており、本番環境やクラスタ環境での使用は推奨されていませんのでご注意ください。

後者のアプリケーション限定イメージは、Yellowfinのアプリケーションしか含まれていませんので、リポジトリデータベースを別途用意する必要があります。

上記のイメージは YellowfinのDocker Hub で公開されています。後述の手順でもここからダウンロードしたものを使用します。
もし独自のイメージをビルドしたい場合は、YellowfinのGitHub で公開されている情報を参考にしてください。

オールインワンイメージの場合

イメージの取得

Docker Hubからオールインワンイメージ(yellowfin-all-in-one)をpullします。
最新バージョンのYellowfinイメージを取得したい場合は以下のコマンドをシェル(Windowsならコマンドプロンプト、Macならターミナル)で実行します。

$ docker pull yellowfinbi/yellowfin-all-in-one:latest

特定のバージョン(例えば9.7.1.1)を取得したい場合は以下のようにします。

$ docker pull yellowfinbi/yellowfin-all-in-one:9.7.1.1

docker-compose.ymlの作成

どこか任意のディレクトリに、以下のような内容のdocker-compose.ymlファイルを作成します。

docker-compose.yml
version: '3'
services:
  yellowfin:
   ports:
      - "18080:8080"
   environment:
      - APP_MEMORY=4096
   image: "yellowfinbi/yellowfin-all-in-one:9.7.1.1"
   container_name: yf-all-in-one
項目 説明
version docker-composeで使用するバージョン。執筆時点(2022年5月24日)では'3'にしておけばOK。 '3'
service アプリケーションを動かすための各要素(?)。任意の名称でOK。 yellowfin
ports ホスト側ポート:コンテナ側ポートを指定する。 "18080:8080"
image 使用するイメージ。前述のpullしたものを指定する。 "yellowfinbi/yellowfin-all-in-one:9.7.1.1"
container_name コンテナの名前を指定する。 yf-all-in-one

また、オールインワンイメージではenvironmentの変数として以下を設定することができます。

項目 説明
APP_MEMORY Yellowfinに割り当てるメモリのメガバイト数を指定する。 4096

Yellowfinコンテナの起動

docker-compose.ymlを保存したディレクトリに移動して、以下のコマンドを実行します。

$ docker compose up -d

その後、上記の例であれば http://localhost:18080 にアクセスすると、ログイン画面が表示されますので、初期の管理者IDとパスワードでログインしてください。
login.png

初回起動時はまだライセンスが適用されていない状態ですので、適切なライセンスファイルをアップロードしてください。
license.png

ライセンスを適用すれば、ごく普通に使用できる状態になります。
dash.png

Yellowfinコンテナの停止

Yellowfinを停止する際は以下のコマンドを実行します。

$ docker stop コンテナの名前

今回の例(コンテナ名がyf-all-in-one)であれば、以下のコマンドでYellowfinコンテナを停止できます。

$ docker stop yf-all-in-one

なお、コンテナを停止してもYellowfinのアプリケーションやリポジトリのデータは失われません。再度コンテナを起動すれば、以前のデータから続けて使用することができます。

コンテナそのものが不要になった場合は、後述のコンテナの削除を行ってください。

アプリケーション限定イメージの場合

リポジトリデータベースの準備

まずはリポジトリデータベースを準備する必要があります。
PostgreSQL、MySQL、Oracle、SQL Serverなどが利用可能ですが、今回はPostgreSQLが既に準備されているという前提で進めます。

Yellowfinインストーラの実行

リポジトリデータベースに必要なデータを作成するために、Yellowfinの新規インストーラを実行します。

用意したデータベースにテーブルとレコードを作成するのが目的なので、それに対応したスクリプトがあれば事足りるところなのですが、あいにくそういったものは提供されていません。
そのため、ひとまずYellowfinのインストールを実行することによって、リポジトリデータベースのテーブルとレコードを作成します。
なお、このインストールで作成されるアプリケーションのフォルダ一式が実際に使われることはないので、後ほど削除してしまって問題ありません。

データベース情報の入力画面では、リポジトリデータベースの情報を入力してください。
inst.png

web.xmlからリポジトリ情報の取得

Yellowinのインストールが完了したら、 Yellowfinのインストールディレクトリ/appserver/webapps/ROOT/WEB-INFにある web.xmlから以下の部分を探して、手元に控えておいてください。

web.xml
    <init-param>
      <param-name>JDBCDriverClass</param-name>
      <param-value>org.postgresql.Driver</param-value>
    </init-param>
    <init-param>
      <param-name>JDBCUrl</param-name>
      <param-value>jdbc:postgresql://localhost:5432/yellowfin</param-value>
    </init-param>
    <init-param>
      <param-name>JDBCUser</param-name>
      <param-value>postgres</param-value>
    </init-param>
    <!-- 
      Password to the configuration database connection is encrypted at
      installation time. If you need to change this password, you can set
      the JDBCPasswordEncrypted parameter to false, and store the password
      in plaintext in the JDBCPassword parameter.
    -->
    <init-param>
      <param-name>JDBCPassword</param-name>
      <param-value>暗号化されたパスワードの文字列</param-value>
    </init-param>
    <init-param>
      <param-name>JDBCPasswordEncrypted</param-name>
      <param-value>true</param-value>
    </init-param>

イメージの取得

Docker Hubからアプリケーション限定イメージ(yellowfin-app-only)をpullします。
ただし、リポジトリデータベースとのバージョンの整合性に注意する必要がありますので、latestではなくバージョンを明確に指定することをお勧めします。

$ docker pull yellowfinbi/yellowfin-app-only:9.7.1.1

docker-compose.ymlの作成

どこか任意のディレクトリに、以下のような内容のdocker-compose.ymlファイルを作成します。

docker-compose.yml
version: '3'
services:
  yellowfin:
   ports:
      - "18080:8080"
   environment:
      - JDBC_CLASS_NAME=org.postgresql.Driver
      - JDBC_CONN_URL=jdbc:postgresql://xxx.xxx.xxx.xxx:5432/yellowfin
      - JDBC_CONN_USER=postgres
      - JDBC_CONN_PASS=暗号化されたパスワードの文字列
      - JDBC_CONN_ENCRYPTED=true
      - APP_MEMORY=4096
   image: "yellowfinbi/yellowfin-app-only:9.7.1.1"
   container_name: yf-app-only

オールインワンイメージで触れた部分は省略しますが、それ以外にenvironmentの変数としてリポジトリの接続情報を記述する必要があります。

項目 web.xmlとの対応
JDBC_CLASS_NAME JDBCDriverClass org.postgresql.Driver
JDBC_CONN_URL JDBCUrl jdbc:postgresql://192.168.1.1:5432/yellowfin ※PostgreSQLの場合、localhost指定ではうまくいかずIPアドレスにする必要がある
JDBC_CONN_USER JDBCUser postgres
JDBC_CONN_PASS JDBCPassword
JDBC_CONN_ENCRYPTED JDBCPasswordEncrypted true

アプリケーション限定イメージでは、上記以外にもenvironmentの変数が存在します。詳細はオンラインマニュアルを参照してください。

Yellowfinコンテナの起動

docker-compose.ymlを保存したディレクトリに移動して、以下のコマンドを実行します。

$ docker compose up -d

その後、今回の例であれば http://localhost:18080 にアクセスすると、ログイン画面が表示されます。

Yellowfinコンテナの停止

今回の例(コンテナ名がyf-app-only)であれば、以下のコマンドでYellowfinコンテナを停止できます。

$ docker stop yf-app-only

コンテナ一覧の表示や、コンテナの削除をするには

コンテナの一覧は以下のコマンドで表示できます。

$docker ps -a

不要になったコンテナを削除するには、以下のコマンドを実行します。

docker rm コンテナIDまたはコンテナ名
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0