Вторая часть Как измерить влияние COVID-19 на проект Jitsi с Python и Elasticsearch Отказ На этот раз мои коллеги ( David , Gerardo ) И я ( Ana ) построил веб-приложение с технологией Python и Flask Framework и закреплена. Здесь мы объясняем вам как
Во-первых, мы должны построить приложение Docker с тремя контейнерами:
- Elasticsearch Image.
- Kibana Image.
- Изображение веб-приложения
Для Elasticsearch и Kibana мы используем заранее построенные изображения из Dockerhub Использование версии 7.8.0. Веб-приложение использует изображение Redis-Alpine.
ПРИМЕЧАНИЕ. Причина, причешь использование Alpine, заключается в том, что эта альтернатива меньше и больше ресурсов эффективно, чем традиционные распределения GNU/Linux (например, Ubuntu)
Вы можете получить необходимые материалы на Gitlab Отказ Изображение ниже показывает разные файлы, которые вы получите, клонируя репо
Структура Docker-Compose.yml
Docker-Compose.yml
Файл показывает структуру, объясненную в предыдущем разделе
version: '3' services: web: build: . ports: - 5000:5000 networks: - elastic redis: image: "redis:alpine" es01: image: docker.elastic.co/elasticsearch/elasticsearch:7.8.0 container_name: es01 environment: - node.name=es01 - cluster.name=es-docker-cluster - discovery.type=single-node - bootstrap.memory_lock=true - "ES_JAVA_OPTS=-Xms1024m -Xmx1024m" ulimits: memlock: soft: -1 hard: -1 volumes: - data01:/usr/share/elasticsearch/data ports: - 9200:9200 networks: - elastic kib01: image: docker.elastic.co/kibana/kibana:7.8.0 container_name: kib01 ports: - 5601:5601 environment: ELASTICSEARCH_URL: http://es01:9200 ELASTICSEARCH_HOSTS: http://es01:9200 networks: - elastic volumes: data01: driver: local data02: driver: local data03: driver: local networks: elastic: driver: bridge
Давайте посмотрим на главные теги, указанные в Docker-Compose.yml.yml.yml
Порты: Настройка докеровского порта с помощью Host Machine Port, где работает Docker. В этом случае 5000, 5601 и 9200.
Image: Docker Image, который загружен для требуемого обслуживания
Сети: это называется «эластичным», чтобы подключить три службы
Окружающая среда: настраивает переменные среды необходимым для работы среди служб, таких как параметры памяти RAM. В пределах службы Kibana необходимо определить переменные
Elasticsearch_url
иElasticsearch_hosts.
, чтобы связать это с Elasticsearch Service.
Конфигурация докерафила
Dockerfile
Имеет необходимые шаги для настройки веб-приложения для ссылки с нашим сценарием Python, который извлекает и хранит данные в кластере Elasticsearch, что в то же время импортирует fixt_dashboard.ndjson
На кибане для предыдущей визуализации.
Он работает на Alpine Distribution, чтобы скопировать необходимые папки, чтобы запустить приложение. Более того, а благодаря требования .txt
, вы можете добавить все зависимости, которые нуждается в сценарии Python.
FROM python:3.7-alpine WORKDIR /code ENV FLASK_APP jitsi-data.py ENV FLASK_RUN_HOST 0.0.0.0 RUN apk add --no-cache git RUN apk add --no-cache tk-dev RUN apk add --no-cache gcc musl-dev linux-headers COPY requirements.txt requirements.txt COPY mapping.json mapping.json COPY templates templates COPY impact_dashboard.ndjson impact_dashboard.ndjson RUN pip install -r requirements.txt EXPOSE 5000 COPY . . CMD ["flask", "run"]
Чтобы запустить приложение (с Docker и Docker-Compose, ранее установленным) откройте свой терминал и выполните следующую команду
$ docker-compose up
Это будет инициировать различные команды, указанные в DockerFile, и загружают требуемые изображения докера. Как только это закончено, вы можете проверить, что Elasticsearch (Localhost: 9200) и Kibana (Localhost: 5601) успешно работает.
Теперь пришло время пойти, где находится веб-приложение Python Flask Application, используя порт 5000.
Нажав на Начать кнопку
Инициализируйте извлечение данных из данных Jitsi GIT (проверьте jitsi-data.py
для более подробной информации) и хранит такие данные на наши Elasticsearch. Наконец, он импортирует fixt_dashboard.ndjson
к нашей кибане, позволяя нам интерактивно играть с данными.
После завершения процесса браузер покажет следующее сообщение:
Конечно, мы можем увидеть, если наш индекс Elasticsearch и Dashboard Kibana успешно добавляются в наши экземпляры:
По умолчанию фильтр времени установлен на последние 15 минут. Вы можете использовать Picker Time, чтобы изменить временную фильтр или выбрать определенный интервал времени или диапазон времени на гистограмме в верхней части страницы.
et voilà Теперь у вас есть прохладная приборная панель вверх и запущена, чтобы проанализировать, как пандемия может влиять на активность разработки программного обеспечения Jitsi.
С учетной записью Docker Hub вы можете построить изображение, где Dockerfile
расположен. Просто введите:
$ docker build -t dockerhubID/DockerHubreponame:imagetag .
Затем загрузите изображение в свой Docker Hub Repo (вы можете создать репо, используя UI UI Docker Hub
$ sudo docker push dockerhubID/DockerHubreponame:imagetag
После того, как изображение загружено в Docker Hub, любой пользователь может использовать и запустить приложение со следующим Docker-Compose.yml
version: '3' services: web: image: daviddp92/jitsi-data-extraction:1.0.0 ports: - 5000:5000 networks: - elastic es01: image: docker.elastic.co/elasticsearch/elasticsearch:7.8.0 container_name: es01 environment: - node.name=es01 - cluster.name=es-docker-cluster - discovery.type=single-node - bootstrap.memory_lock=true - "ES_JAVA_OPTS=-Xms1024m -Xmx1024m" ulimits: memlock: soft: -1 hard: -1 volumes: - data01:/usr/share/elasticsearch/data ports: - 9200:9200 networks: - elastic kib01: image: docker.elastic.co/kibana/kibana:7.8.0 container_name: kib01 ports: - 5601:5601 environment: ELASTICSEARCH_URL: http://es01:9200 ELASTICSEARCH_HOSTS: http://es01:9200 networks: - elastic volumes: data01: driver: local data02: driver: local data03: driver: local networks: elastic: driver: bridge
Закрытие мыслей
Мы узнали, как подключить веб-приложение с помощью Python Technology и Flask Framework с помощью Docker-Compose. Мы также увидели, как использовать и запустить приложение, используя изображения Docker Hub.
Что вы думаете об этом проекте? Что мы должны улучшить? Обратная связь более чем добро пожаловать:)
Оригинал: “https://dev.to/anajsana95/dockerizing-your-first-web-app-with-python-and-flask-2fn2”