Среда WEB разработки на базе Docker. Часть 2

Примечание: Это вторая часть статьи, где мы пошагово создаем окружение для веб разработки. В этот статье, мы добавим 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/

Скриншот с браузера: Gr6vC.png


Примечание: За 2 части, мы создали полностью рабочее окружение. В следующих частях мы рассмотрим, как настроить работу xdebug в IDE и перейдем в разработке поисковой системы для сайта , на примере блога, с использованием Elasticsearch

Оцените статью: