Docker Composeで爆速構築!OpenSearch + Dashboards環境構築手順

「OpenSearch、ちょっと触ってみたいな」と思ったとき、環境構築でつまずくのはもったいない。

自分自身も最近、業務で使用する必要が出てきました。

今回は、docker-compose を使って、コマンド一つでOpenSearchとOpenSearch Dashboardsの環境をサクッと構築する手順を備忘として残しておきます。

使用しているファイルなどはこちらで確認できます。

1. docker-compose.yml の準備

まず、作業用のディレクトリを作成し、その中に docker-compose.yml という名前で以下のファイルを作成します。 ファイルの内容は、OpenSearch本体(opensearch-node1)と、データを可視化するためのダッシュボード(opensearch-dashboards)の2つのサービスを定義しています。

services:
  opensearch-node1:
    image: opensearchproject/opensearch:2.15.0
    container_name: opensearch-node1
    environment:
      - cluster.name=opensearch-cluster
      - node.name=opensearch-node1
      - discovery.seed_hosts=opensearch-node1
      - cluster.initial_cluster_manager_nodes=opensearch-node1
      - bootstrap.memory_lock=true # along with the memlock settings below, disables swapping
      - "OPENSEARCH_JAVA_OPTS=-Xms512m -Xmx512m" # minimum and maximum Java heap size, recommend setting both to 50% of system RAM
      - "OPENSEARCH_INITIAL_ADMIN_PASSWORD=MyStrongPassword123!"
    ulimits:
      memlock:
        soft: -1
        hard: -1
      nofile:
        soft: 65536 # maximum number of open files for the OpenSearch user, set to at least 65536 on modern systems
        hard: 65536
    volumes:
      - opensearch-data1:/usr/share/opensearch/data
    ports:
      - 9200:9200
      - 9600:9600 # required for Performance Analyzer
    networks:
      - opensearch-net
  opensearch-dashboards:
    image: opensearchproject/opensearch-dashboards:2.15.0
    container_name: opensearch-dashboards
    ports:
      - 5601:5601
    expose:
      - "5601"
    environment:
      OPENSEARCH_HOSTS: '["https://opensearch-node1:9200"]'
      OPENSEARCH_SSL_VERIFICATIONMODE: none
    networks:
      - opensearch-net

volumes:
  opensearch-data1:

networks:
  opensearch-net:

簡単な設定解説

opensearch-node1: OpenSearchの本体です。

  • image: opensearchproject/opensearch:2.15.0 を使用します。
  • environment: クラスター名やノード名、初期管理者パスワードなどを設定しています。OPENSEARCH_INITIAL_ADMIN_PASSWORDで設定したパスワードは後で使います。
  • volumes: opensearch-data1という名前付きボリュームをマウントし、コンテナを削除してもデータが消えないようにしています。
  • ports: 9200番ポートを外部に公開して、API経由でアクセスできるようにします。

opensearch-dashboards: OpenSearchのデータを可視化・管理するためのツールです。

  • image: opensearchproject/opensearch-dashboards:2.15.0 を使用します。
  • environment: 接続先のOpenSearchホスト(opensearch-node1)を指定しています。
  • ports: 5601番ポートを外部に公開し、ブラウザからアクセスできるようにします。

2. コンテナの起動

docker-compose.ymlを保存したディレクトリで、以下のコマンドを実行します。 -dオプションを付けることで、バックグラウンドでコンテナが起動します。

docker-compose up -d

コマンド実行後、Dockerイメージのダウンロードとコンテナの起動が始まります。少し時間がかかる場合があります。

3. 動作確認

コンテナが起動したら、正常に動作しているか確認してみましょう。

OpenSearchの確認

ターミナルから以下のcurlコマンドを実行します。 docker-compose.ymlで設定した初期管理者ユーザー(admin)とパスワード(MyStrongPassword123!)でアクセスします。 -kオプションは、自己署名証明書のエラーを無視するためのおまじないです。

curl -k -u 'admin:MyStrongPassword123!' https://localhost:9200

以下のようなJSONが返ってくれば、OpenSearchは正常に起動しています。

{
  "name" : "opensearch-node1",
  "cluster_name" : "opensearch-cluster",
  "cluster_uuid" : "...",
  "version" : {
    "distribution" : "opensearch",
    "number" : "2.15.0",
    ...
  },
  "tagline" : "The OpenSearch Project: https://opensearch.org/"
}

OpenSearch Dashboardsの確認

次に、Webブラウザで以下のURLにアクセスします。

http://localhost:5601

ログイン画面が表示されたら、以下の情報でログインします。

  • Username: admin
  • Password: MyStrongPassword123!

ログイン後、ダッシュボードの初期画面が表示されれば成功です。

[OpenSearch Dashboardsのホーム画面の画像]

4. 環境の片付け

確認が終わったら、以下のコマンドで起動したコンテナを停止・削除できます。 作成したボリュームも一緒に削除したい場合は、--volumesオプションを追加してください。

# コンテナの停止と削除
docker-compose down

# ボリュームも一緒に削除する場合
docker-compose down --volumes

まとめ

docker-compose.ymlを一度用意してしまえば、docker-compose upコマンドだけでいつでも同じ環境を再現できます。 OpenSearchを学習したり、アプリケーションとの連携を試したりする際に非常に便利です。