В этом проекте мы создадим небольшое приложение, используя два контейнера (веб и 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]
Приветствую вас с миром! :)