В этом проекте мы создадим небольшое приложение, используя два контейнера (веб и Redis) с помощью docker-compose. Наша цель — не просто сам проект, а сосредоточиться на логике, установке и процессе запуска docker-compose:

Если вы новичок в Docker, прочтите другую мою статью о Docker.

Развертывание Postgresql и pgAdmin4 с помощью Docker на CentOS7: пошаговое руководство

Что такое docker-compose:Docker Compose — это инструмент для определения и запуска многоконтейнерных приложений Docker. Он позволяет вам определить весь стек приложений, включая несколько служб, сетей и томов, используя один файл конфигурации YAML. Этот файл определяет службы, их конфигурации и то, как они взаимодействуют друг с другом. Docker Compose упрощает процесс управления сложными приложениями, предоставляя возможность запускать и останавливать все службы вместе с помощью одной команды.

Здесь вы можете прочитать официальную статью.

Проект: В нашем проекте мы создадим веб-страницу в формате HTML, на которую пользователи смогут загружать только файлы .csv. Затем мы создадим гистограмму, показывающую количество продуктов, купленных отдельными лицами. В процессе загрузки пользователи будут указывать имя, и на основе этого имени мы будем получать исторические записи из Redis.

Все файлы доступны на изображении ниже. Вы можете получить доступ к этим файлам через мой GitHub.

1-) app.py:Этот файл содержит код нашего приложения. Это типичный файл приложения.

Строки 8 и 9 содержат код, который я использовал для установления соединения между Flask и Redis.

Строки 11 и 12 не имеют решающего значения, поскольку они относятся к HTML-коду, который я открою в браузере.

Функция upload() содержит наш основной код Python.

docker-compose.yml:

version: '3.8'

services:
  redis:
    image: redis
  web: 
    build: .
    ports:
     - "5000:5000"

В этих строках кода мы сначала указываем версию YAML-файла, а затем добавляем приложения, которые будем использовать в качестве сервисов.

Всего у нас есть два приложения, которые мы будем использовать. Вот почему мы создаем два отдельных контейнера Docker. Это то, что мы называем docker-compose :) Эти приложения — Redis и Web.

В разделе «web» мы используем «build:». чтобы указать Docker Compose выполнить сборку из текущего каталога, в котором мы находимся при первой настройке. Мы также установили порт 5000:5000.

2-) Файл Docker:

FROM python:3.9

WORKDIR /app

COPY requirements.txt requirements.txt

RUN pip install -r requirements.txt

COPY . .

EXPOSE 5000

ENV FLASK_APP=app.py
ENV FLASK_RUN_HOST=0.0.0.0

CMD ["flask", "run"]

1. ИЗ python:3.9:Эта строка устанавливает базовый образ для вашего образа Docker. Он указывает, что вы хотите начать с базового образа, в котором установлен Python 3.9. Этот базовый образ предоставит среду выполнения вашего приложения.

2. WORKDIR /app ‹‹ Эта строка устанавливает рабочий каталог внутри контейнера как /app. Любые последующие инструкции будут выполняться в этом каталоге. Рекомендуется установить в качестве рабочего каталога подходящее место для кода вашего приложения. Как видно, когда мы входим в контейнер, мы попадаем по пути /app.

3. КОПИРОВАТЬ require.txt require.txt:Эта строка копирует файл require.txt из вашего локального каталога в каталог /app внутри контейнера. В этом файле обычно перечислены зависимости Python, необходимые вашему приложению.

4. RUN pip install -r require.txt:Он обновляет сам pip, а затем устанавливает пакеты, перечисленные в файле require.txt.

5. КОПИРОВАТЬ. . :Эта строка копирует все файлы и каталоги из вашего локального каталога в текущий каталог (/app) внутри контейнера. Он включает в себя код вашего приложения Flask и любые другие необходимые файлы.

6. EXPOSE 5000:Эта строка указывает, что контейнер будет прослушивать порт 5000. Будьте осторожны, потому что, если вы используете порт 5000, вы не сможете четко построить Dockerfile.

7. ENV FLASK_APP=app.py:Эта строка устанавливает для переменной среды с именем FLASK_APP значение app.py. Эта переменная среды используется платформой Flask для идентификации основного файла приложения.

8. ENV FLASK_RUN_HOST=0.0.0.0:Эта строка устанавливает для переменной среды FLASK_RUN_HOST значение 0.0.0.0, что означает, что сервер разработки Flask должен привязываться ко всем сетевым интерфейсам в контейнере. Это позволяет серверу принимать соединения извне контейнера.

9. CMD [“flask”, “run”]:Эта строка определяет команду, которая будет выполняться при запуске контейнера. Он запускает команду запуска Flask, которая запускает сервер разработки Flask для запуска вашего приложения.

3-) require.txt:В файле require.txt перечислены зависимости Python, необходимые приложению. В нем указаны пакеты, которые необходимо установить для правильной работы приложения.

4-) шаблоны › index.html и извлекаемые.html:Эти файлы содержат базовый HTML-код проекта.

СТРОИТЬ И НАЧАТЬ

Когда мы запускаем файл Docker-compose.yml, инструкции в Dockerfile выполняются для создания образа Docker. Но не забывайте: вам необходимо указать текущее местоположение проекта.

docker-compose build

Если все настроено правильно, мы можем запустить контейнеры, используя:

docker-compose up -d

Флаг «-d» означает запуск в автономном режиме. Так что вы все еще можете использовать консоль!

Таким образом, мы можем запустить приложение в любом браузере «localhost:5000», поскольку IP-адрес контейнера установлен на localhost (0.0.0.0) в файле Dockerfile, и мы открыли порт 5000, что означает, что наш приложение доступно через порт 5000.

Это небольшой проект, поэтому вы не сможете получить представление о загрузке другого набора данных. Так что просто попробуйте мой набор данных, вы можете найти его в my github.

Если вы хотите остановить контейнеры,

# docker-compose stop < container id >
# out redis container id is = 9be63178680f
# our web container id is = 3dcf10421366 

docker stop 9be63178680f
docker stop 3dcf10421366

Если вы хотите начать,

docker start 9be63178680f
docker start 3dcf10421366

Надеюсь, вы все поймете :) Если вам нужно что-то спросить о проекте, пришлите мне письмо. “ [email protected]

Приветствую вас с миром! :)