Примечание: Это вторая часть статьи, где мы пошагово создаем окружение для веб разработки. В этот статье, мы добавим Elasticsearch и Kibana. Эти инструменты нам пригодятся, для будущих статей, которые будут посвещенны разработке на Laravel.
Обновляем нашу структуру проекта
В нашу уже готовую структуру проекта, мы добавим новый каталог и получим:
.
├── php
│ ├── 5.6
│ │ ├── ini
│ │ ├── workers
│ │ └── workspace
│ │ └── Dockerfile
│ ├── 7.1
│ │ ├── ini
│ │ ├── workers
│ │ └── workspace
│ │ └── Dockerfile
│ ├── 7.2
│ │ ├── ini
│ │ ├── workers
│ │ └── workspace
│ │ └── Dockerfile
│ └── 7.3
│ ├── ini
│ ├── workers
│ └── workspace
│ └── Dockerfile
├── nginx
│ ├── conf.d
│ │ ├── default.conf
│ │ └── vhost.conf
│ └── logs
├── mysql
│ ├── 5.7
│ │ ├── conf.d
│ │ ├── data
│ │ ├── dump
│ │ └── logs
│ └── 8
│ ├── conf.d
│ ├── data
│ ├── dump
│ └── logs
├── www
│ ├── site-1.local
│ │ ├── adminer.php
│ │ └── info.php
│ ├── site-2.local
│ │ ├── adminer.php
│ │ └── info.php
│ ├── site-3.local
│ │ ├── adminer.php
│ │ └── info.php
│ └── site-4.local
│ ├── adminer.php
│ └── info.php
├── elasticsearch
│ └── data
├── .env
└── docker-compose.yml
Структура .env
В наш уже готовый файл .env добавим новые настройки. Готовый файл: https://github.com/LukaS0lncev/workspace/blob/main/.env
# Настройки Elasticsearch
# Порт, который следует использовать
# для соединения с локального компьютера
ES_PORT=9200
# Настройки Kibana
# Порт, который следует использовать
# для соединения с локального компьютера
KIBANA_PORT=5601
Структура docker-compose.yml
Изменим наш docker-compose.yml , добавим новые записи для двух новых контейнеров. Готовый файл: https://github.com/LukaS0lncev/workspace/blob/main/docker-compose.yml
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.10.1 #берем контейнер с официального сайта elastic.co
container_name: elasticsearch-workspace #задаем имя контейнера
environment: #устанавливаем переменные среды
- node.name=elasticsearch
- cluster.name=es-docker-cluster
- cluster.initial_master_nodes=elasticsearch
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m" #задаем размер выделяемой ОЗУ
ulimits:
memlock:
soft: -1
hard: -1
volumes: #указываем связь по каталогам локальный_пк:контейнер
- ./elasticsearch/data:/usr/share/elasticsearch/data
ports: #указываем порты локальная_машина:контейнер
- ${ES_PORT}:9200
networks: #опеределяем сеть для контейнера
- backend
kibana:
image: docker.elastic.co/kibana/kibana:7.10.1 #берем контейнер с официального сайта elastic.co
container_name: kibana-workspace #задаем имя контейнера
ports: #указываем порты локальная_машина:контейнер
- ${KIBANA_PORT}:5601
environment: #устанавливаем переменные среды
ELASTICSEARCH_URL: http://elasticsearch:9200
ELASTICSEARCH_HOSTS: http://elasticsearch:9200
depends_on: #определяем порядок запуска койнера, kibana будет запущен после elasticsearch
- elasticsearch
networks: #опеределяем сеть для контейнера
- backend
Запускаем и проверяем
Проверяем работу Elasticsearch
#docker-compose up -d
Логи успешного запуска:
Starting mysql-5.7-workspace ... done
Starting php-7.2-workspace ... done
Starting php-7.1-workspace ... done
Starting php-5.6-workspace ... done
Starting mysql-8-workspace ... done
Starting php-7.3-workspace ... done
Creating elasticsearch-workspace ... done
Starting nginx-workspace ... done
Creating kibana-workspace ... done
Чтобы подключиться в наш контейнер elasticsearch и проверить его работу, нужно:
Примечание: мы используем в примере Windows 10 и cmd
- Определить id контейнера, выполнить команду
#docker ps
#docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ffba55ade2ec docker.elastic.co/kibana/kibana:7.10.1 "/usr/local/bin/dumb…" 24 minutes ago Up 11 minutes 0.0.0.0:5601->5601/tcp kibana-workspace
0db277353d5e docker.elastic.co/elasticsearch/elasticsearch:7.10.1 "/tini -- /usr/local…" 24 minutes ago Up 11 minutes 0.0.0.0:9200->9200/tcp, 9300/tcp elasticsearch-workspace
В нашем случае, у нашего койнтейнера elasticsearch-workspace , ID 0db277353d5e
- Подключиться через exec
docker exec -i -t «CONTAINER ID» bash
#docker exec -i -t 0db277353d5e bash
[root@0db277353d5e elasticsearch]#
- Протестировать работу Elasticsearch , через команду
curl -X GET 'http://localhost:9200
[root@0db277353d5e elasticsearch]# curl -X GET 'http://localhost:9200'
{
"name" : "elasticsearch",
"cluster_name" : "es-docker-cluster",
"cluster_uuid" : "QfGSl7S3S02GUSUHlput8Q",
"version" : {
"number" : "7.10.1",
"build_flavor" : "default",
"build_type" : "docker",
"build_hash" : "1c34507e66d7db1211f66f3513706fdf548736aa",
"build_date" : "2020-12-05T01:00:33.671820Z",
"build_snapshot" : false,
"lucene_version" : "8.7.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
Мы получили ответ от нашего сервера, значит Elasticsearch работает.
Проверяем работу Kibana
Для проверки работы, просто в вашем браузере откройте Kiban по порту, который вы установили. В моем случае это http://localhost:5601/
Скриншот с браузера:
Примечание: За 2 части, мы создали полностью рабочее окружение. В следующих частях мы рассмотрим, как настроить работу xdebug в IDE и перейдем в разработке поисковой системы для сайта , на примере блога, с использованием Elasticsearch