Elasticsearch
docker
kibana
docker-compose

docker-compose.yml を分割して external_links でコンテナを接続

はじめに

docker-composeファイルを分割させた時にしたことです。

今回はkibanaからelasticsearchに通信します。

環境

  • docker-compoase
  • elasticsearch
  • kibana

分割前のdocker-compose.yml

docker-compose.yml
version: '2'
services:
  elasticsearch:
    container_name: esc
    image: esi:1.0.0
    build: ./es
    volumes:
      - ./data/es:/usr/share/elasticsearch/data
    ports:
        - 9200:9200
    expose:
        - 9300
  kibana:
    container_name: kibanac
    image: kibanai:1.0.0
    build: ./kibana
    links:
      - elasticsearch
    ports:
      - 5601:5601

このdocker-compoase.ymlを分割させます。
linksを使っています。

分割後のdocker-compose.yml

ディレクトリ構成は以下の通りです。

└── elasticsearch_external_links
    └── es_d
        ├── docker-compose.yml
        ├── Dockerfile
        └── config
            └── elasticsearch.yml
    └── kibana_d
        ├── docker-compose.yml
        ├── Dockerfile
        └── config
            └── kibana.yml
es_d/config/elasticsearch.yml
http.host: 0.0.0.0

### x-pack functions
xpack.security.enabled: false
# 無償利用は1クラスタまで
xpack.monitoring.enabled: true
xpack.graph.enabled: false
xpack.watcher.enabled: false
es_d/docker-compose.yml
version: '2'
services:
  elasticsearch:
    build: .
    container_name: es_c_el
    image: es_i_el:1.0.0
    volumes:
      - ./data/es:/usr/share/elasticsearch/data
    ports:
        - 9200:9200
    expose:
        - 9300
es_d/Dockerfile
FROM docker.elastic.co/elasticsearch/elasticsearch:5.5.3

COPY ./config/elasticsearch.yml /usr/share/elasticsearch/config/elasticsearch.yml

# kuromojiをインストール
RUN elasticsearch-plugin  install analysis-kuromoji
kibana_d/config/kibana.yml
---
# Default Kibana configuration from kibana-docker.

server.name: kibana
server.host: "0"
elasticsearch.url: http://elasticsearch:9200
elasticsearch.username: elastic
elasticsearch.password: changeme
xpack.monitoring.ui.container.elasticsearch.enabled: true
kibana_d/docker-compose.yml
version: '2'
services:
  kibana:
    build: .
    container_name: kibana_c_el
    image: kibana_i_el:1.0.0
    external_links:
      - elasticsearch
    ports:
      - 5601:5601
    networks:
      - default
      - es1_default

networks:
  es1_default:
    external:
      name: es_d_default

ポイントは ディレクトリ名がそのままネットワーク名になっているところです
es_d_default

kibana_d/Dockerfile
FROM docker.elastic.co/kibana/kibana:5.5.3

COPY ./config/kibana.yml /opt/kibana/config/kibana.yml

実行

elasticsearchを起動

$ cd es_d
$ docker-compose up -d --build

kibanaを起動

$ cd kibana_d
$ docker-compose up -d --build

docker networkの確認

$ docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
aaaaaaaaaaaa        es_d_default        bridge              local
bbbbbbbbbbbb        kibana_d_default    bridge              local

elasticsearch http://localhost:9200/
kibana http://localhost:5601/

github サンプル 分割前
github サンプル 分割後

これでOK