Рубрики
Без рубрики

Докереное ваше первое веб-приложение с Python и Flask

Вторая часть того, как измерить влияние COVID-19 на проект Jitsi с Python и Elasticsearch. Это … Теги с докером, Python.

Вторая часть Как измерить влияние 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”