4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

DockerコンテナでElasticSearchを起動する(docker-compose)

Last updated at Posted at 2020-05-05

目的

  • DockerコンテナでElasticSearchを起動する
  • AWSのLambda + ElasticSearchServiceを作る前段階のお勉強のためにやった

やらないこと

  • ElasticSearchの基礎的な説明(公式なり他記事を参照してください)
  • Docker、docker-composeの環境構築について

環境

  • OS: macOS Catalina 10.15.4
  • Docker: 2.2.0.5
  • docker-compose: 1.25.4
  • ElasticSearch: 7.4.2

やったこと

フォルダ構成

今回試したフォルダ構成は以下の通り
将来的にPythonから操作したいため、Pythonのコンテナも用意する

/sample
  ├ /elasticsearch
      └ Dockerfile
  ├ /python3
      └ Dockerfile
  └ docker-compose.yaml

Dockerfileの作成

ElasticSearch用のDockerfileを作成

Dockerfile
# Version 7.4.2 を選択してイメージを取得する
FROM docker.elastic.co/elasticsearch/elasticsearch:7.4.2
# 日本語を扱う場合はplugin「analysis-kuromoji」をインストールする
RUN elasticsearch-plugin install analysis-kuromoji

Python3用のDockerfileを作成

Dockerfile
FROM python:3.8
USER root
SHELL ["/bin/bash", "-c"]
ENV DEBCONF_NOWARNINGS yes
RUN apt-get update && apt-get -y install locales && \
    localedef -f UTF-8 -i ja_JP ja_JP.UTF-8
ENV LANG ja_JP.UTF-8
ENV LANGUAGE ja_JP:ja
ENV LC_ALL ja_JP.UTF-8
ENV TZ JST-9
ENV TERM xterm
RUN apt-get install -y vim less
RUN pip install --upgrade pip
RUN pip install --upgrade setuptools
# clientである「elasticsearch」をインストール
RUN pip install  numpy \
                 matplotlib \
                 pandas \
                 elasticsearch \

docker-compose.yamlの作成

ElasticSearchとpythonのコンテナを立ち上げるためにdocker-compose.yamlを作成

docker-compose.yaml
version: '3'

services:
  elasticsearch:
    build: ./elasticsearch
    container_name: elasticsearch
    environment:
      - discovery.type=single-node # 1台構成で十分なため「single-node」を設定
      - cluster.name=docker-cluster
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    ports:
      - 9200:9200
    volumes:
      - ./elasticsearch:/usr/share/elasticsearch/data
    networks:
      - esnet

  python3:
    build: ./python3
    container_name: python3
    working_dir: '/root/dev/'
    tty: true
    volumes: 
      - ./python3/:/root/dev/
    networks:
      - esnet

# Elasticsearchとpython3のコンテナを同じdocker network上に起動させるため、networksを作成
networks:
  esnet:

docker-composeコマンドを実行

docker-composeコマンドでコンテナを起動する

$ docker-compose build
$ docker-compose up -d

コンテナが起動していることを確認する
ElasticSearchとpython3の両コンテナが起動していればOK

$ docker ps
CONTAINER ID        IMAGE                                COMMAND                  CREATED              STATUS              PORTS                              NAMES
d33d23acd0c6        sample_python3         "python3"                About a minute ago   Up About a minute                                      python3
e3b929c0f521        sample_elasticsearch   "/usr/local/bin/dock…"   About a minute ago   Up About a minute   0.0.0.0:9200->9200/tcp, 9300/tcp   elasticsearch

ElastisSearchの起動確認

curlコマンドを使用してElasticsearchに接続する
cluster-nameなどが返却されればOK

$ curl -X GET http://localhost:9200
{
  "name" : "37a5326e5c64",
  "cluster_name" : "docker-cluster",
  "cluster_uuid" : "RX8UaCNpSmmCiyX2p2ra0w",
  "version" : {
    "number" : "7.4.2",
    "build_flavor" : "default",
    "build_type" : "docker",
    "build_hash" : "2f90bbf7b93631e52bafb59b3b049cb44ec25e96",
    "build_date" : "2019-10-28T20:40:44.881551Z",
    "build_snapshot" : false,
    "lucene_version" : "8.2.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

次回のお話

pythonコンテナからElasticserviceに接続してindexの操作をしてみた
pythonでElasticsearchを操作する(登録・検索)

4
4
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
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?