https://github.com/yaleksandr89/docker-elasticsearch
Проект предоставляет готовый стек `Elasticsearch + analysis-icu + analysis-phonetic + Kibana` с обратным прокси `Nginx` для удобного доступа.
https://github.com/yaleksandr89/docker-elasticsearch
analytic-icu analytic-phonetic elastic elasticsearch elasticstack kibana kibana-dashboard nginx
Last synced: 11 months ago
JSON representation
Проект предоставляет готовый стек `Elasticsearch + analysis-icu + analysis-phonetic + Kibana` с обратным прокси `Nginx` для удобного доступа.
- Host: GitHub
- URL: https://github.com/yaleksandr89/docker-elasticsearch
- Owner: yaleksandr89
- License: mit
- Created: 2025-03-13T19:50:10.000Z (11 months ago)
- Default Branch: master
- Last Pushed: 2025-03-13T20:23:43.000Z (11 months ago)
- Last Synced: 2025-03-13T21:30:41.558Z (11 months ago)
- Topics: analytic-icu, analytic-phonetic, elastic, elasticsearch, elasticstack, kibana, kibana-dashboard, nginx
- Language: Dockerfile
- Homepage:
- Size: 192 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# Global Elasticsearch Stack
[](LICENSE)
## Выберите язык:
| Русский | English | Español | 中文 | Français | Deutsch |
|------------|--------------------------------------|--------------------------------------|---------------------------------|---------------------------------------|--------------------------------------|
| **Выбран** | [English](./langs/README_en.md) | [Español](./langs/README_es.md) | [中文](./langs/README_zh.md) | [Français](./langs/README_fr.md) | [Deutsch](./langs/README_de.md) |
Проект предоставляет готовый стек `Elasticsearch + analysis-icu + analysis-phonetic + Kibana` с обратным прокси `Nginx` для удобного доступа.
## 📋 Предварительные требования
- Docker 20.10+ и Docker Compose 2.0+
- 4+ GB свободной оперативной памяти
- Порты 8080 и 9200 свободны на хосте
- Существующая Docker сеть `external_network` (**если не требуется нужно удалить из docker-compose.yml**)
## 🗂 Структура проекта
```
.
├── .docker.env (создается командой или вручную)
├── .docker.env.example
├── .gitignore
├── docker-compose.yml
├── Makefile
├── README.md
├── langs
│ ├── ...файлы локализации README.md...
├── assets
│ ├── ...контент для README.md...
├── docker-configs
│ ├── elasticsearch
│ │ ├── Dockerfile
│ │ └── elasticsearch.yml
│ ├── kibana
│ │ ├── Dockerfile
│ │ ├── kibana.yml
│ │ └── wait-for-elastic.sh
│ └── nginx
│ ├── Dockerfile
│ └── default.conf.template
└── data
├── ...создается под проект в .env...
```
## ⚙️ Конфигурация
Основные переменные окружения (файл `.docker.env`):
| Переменная | По умолчанию | Описание |
|----------------------|----------------------|-----------------------------------|
| COMPOSE_PROJECT_NAME | elasticsearch | Название проекта |
| ELASTIC_VERSION | latest | Версия Elasticsearch |
| KIBANA_VERSION | latest | Версия Kibana |
| NGINX_VERSION | latest | Версия Nginx |
| ELASTIC_CONTAINER | elasticsearch | Название контейнера elasticsearch |
| KIBANA_CONTAINER | kibana | Название контейнера kibana |
| NGINX_CONTAINER | nginx | Название контейнера nginx |
| KIBANA_DOMAIN | kibana.local | Домен для доступа к Kibana |
| ELASTIC_DOMAIN | elastic.local | Домен для доступа к Elasticsearch |
| KIBANA_PORT | 5601 | Порт kibana на хосте |
| ELASTIC_PORT | 9200 | Порт elasticsearch на хосте |
| NGINX_PORT | 80 | Порт Nginx на хосте |
| ELASTIC_DATA_DIR | ./data/elasticsearch | Хранилище данных Elasticsearch |
| KIBANA_DATA_DIR | ./data/kibana | Хранилище данных Kibana |
| EXTERNAL_NETWORK | external_network | Внешняя сеть Docker |
## 🛠 Технические детали
- **Elasticsearch**:
- Single-node кластер
- Выделено 2GB RAM
- Плагин `analysis-icu` предустановлен
- Плагин `analysis-phonetic` предустановлен
- Конфигурация с синонимами через `synonyms.txt`
- **Kibana**:
- Автоматическое ожидание готовности Elasticsearch
- Настроен прокси через Nginx
- **Nginx**:
- Обратный прокси для Elasticsearch и Kibana
## 🚀 Быстрый старт
### 1. Клонирование репозитория
```bash
git clone https://github.com/yourusername/docker-elasticsearch.git
cd docker-elasticsearch
```
### 2. Инициализация окружения
Если вы используете Windows - смотрите файл `Makefile` - там есть полное описание команд. Рекомендую использовать или `Linux` или `Windows + WSL`.
#### 2.1 инициализация .docker.env
Выполнить:
```makefile
make init
```
В директории будет создан файл `.docker.env`, а также директории в которых будут храниться файлы (указываются в переменных: `ELASTIC_DATA_DIR`, `KIBANA_DATA_DIR`)
#### 2.2 Скачать образы elasticsearch, kibana, nginx
Выполнить:
```makefile
make pull
```
Будут скачены образы с версией указанной в `ELASTIC_VERSION`, `KIBANA_VERSION`, `NGINX_VERSION`.
#### 2.2 Запустить проект
Выполнить:
```makefile
make up
```
Если в процессе запуска возникла ошибка:
```text
network onex_backend declared as external, but could not be found
```

Это означает, что вы не указали внешнюю сеть (сеть проекта, к которой нужно подключить elasticsearch). Варианта 2:
1. Указать в существующую сеть в `.docker.env`, параметр `EXTERNAL_NETWORK`
2. Удалить из `docker-compose.yml`
```
У сервиса elasticsearch:
- external_network
У networks:
external_network:
name: ${EXTERNAL_NETWORK}
external: true
```
#### 2.3 Остальные команды
- Сборка образов без кэша: `make build`
- Останавливает контейнеры: `make down`
- "Жесткий" перезапуск: `make reset`
- "Мягкий" перезапуск: `make restart`
- Войти в нужный контейнер: `make in `
- Просмотреть логи нужного контейнера: `make log `
## 🔌 Доступ к сервисам
После запуска доступны через Nginx:
- Kibana: http://`${KIBANA_DOMAIN}`:`${NGINX_PORT}`
- Elasticsearch: http://`${ELASTIC_DOMAIN}`:`${NGINX_PORT}`
По умолчанию:
- Kibana: http://kibana.local:80
- Elasticsearch: http://elastic.local:80
**Не забудьте прописать домены**:
* Для Windows: `C:\Windows\System32\drivers\etc\hosts`
* Для Linux: `/etc/hosts`
Пример:
```
127.0.0.1 elastic.local
127.0.0.1 kibana.local
```
# Результат
Доступ к Elasticsearch через браузер (http://elastic.local:80):


Доступ к Kibana через браузер (http://kibana.local:80):


