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

Приложение Doceerized Python Flask в AWS ECR / ECS с использованием Circleci

Hello World Tutorial Получение приложений приложения Doceerized Python Hello-World в AWS использует Circleci. Помечено с Python, Docker, Circleci, AWSECRECS.

Я провел некоторое время вчера, получив питон Колбу Приложение в Amazon Web Services (AWS). Надеюсь, этот учебник может помочь вам сэкономить некоторое время в том же месте для вашего собственного Python (или Docker) веб-приложений!

Непрерывная интеграция (CI) и непрерывное развертывание (CD) являются мощными методиками, которые позволяют командам быстро сотрудничать, чтобы произвести постоянную стоимость. Каждый код нажимает на обозначенную ветвь, выступает с трубопровода для создания, тестирования и развертывания кода к целевой среде. Circleci – это интеграционная трубопровод в качестве службы, которая позволяет разработчикам создавать трубопроводы, не беспокоясь о управлении инфраструктурой.

Docker – это замечательная технология, которая стандартизирует управление и доставку приложений. Это похоже на девиз USPS, «если он подходит, это суда». Все основные облачные поставщики имеют решение для развертывания и управления контейнерами Docker, в этом руководстве мы будем использовать AWS ECR/ECS для этого.

1. Git clone dev3l: python-flask-aws

Это репозиторий Barebones. Это намеренно Slim, поэтому вы можете сосредоточиться на том, чтобы получить что-то и бежать раньше, чем позже.

: git clone https://dev3l@bitbucket.org/dev3l/python-flask-aws.git
: cd python-flask-aws
plython-flask-aws: 

2. Запустите приложение Python Flask Hello-World

Следующие команды, выполняемые из командной строки, создаст новую виртуальную среду, называемую Python-Flask-aws , активируйте его, установите зависимости внутри требования .txt Файл и, наконец, запустите приложение Hello-World Flask.

: python3 -m venv python-flask-aws
: source python-flask-aws/bin/activate
: pip install -r requirements.txt
: python app.py
---
 * Running on http://0.0.0.0:80/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 262-674-088

Мы должны быть в состоянии загрузить сайт, перейдя на http://localhost или http://0.0.0.0 . После проверенного, вернитесь к терминалу и нажмите Ctrl-C остановить приложение.

3. Построить изображение докера

Теперь, когда мы знаем, что приложение может запускать снаружи Docker, давайте проверим, что мы можем запускать его для запуска внутри контейнера.

: docker build -t python-flask:latest .
: docker run -d -p 80:80 python-flask

Еще раз, на данный момент убедитесь, что приложение работает через браузер в http://localhost

4. CORDUP CIRCLECI

Давайте отключаем вашу локальную копию хранилища и подтолкните его к себе. Это может быть сделано через вилку или вручную. Если не выполнено через вилку, создайте новый опорный репозиторий для GitHub или Bitbucket.

: rm -rf .git
: git remote add origin 
: git add .
: git commit "Add flask-aws project scaffolding"
: git push

После того, как у вас есть отдельная или разветвленная копия хранилища, в браузере перейдите к Circleci . Из левого меню выберите Добавить проекты. Если еще не сделано, разрешите circleci подключаться к вашим репозиториям. Нажмите на Настроить проект на вашем репозитории из списка.

Circleci использует ./circleci/config.yml в качестве шаблона для создания вашего приложения. Теперь нам нужно установить переменные среды сборки, которые ссылаются в этот файл.

Для этого нам нужны четыре части информации:

  • AWS Access Key.
  • AWS Secret Key.
  • AWS аккаунт I. d
  • AWS Область

Ссылки на то, как сделать, чтобы получить эту информацию можно найти здесь для доступа и секретного ключа. Ваш идентификатор учетной записи можно найти под Мой аккаунт Меню от консоли AWS.

В Circleci для трубопровода перейдите к настройке и введите следующие переменные среды:

Aws_access_key_id. Используется AWS CLI
Aws_secret_access_key. Используется AWS CLI
Aws_default_region. Используется AWS CLI. Пример значения: «US-East-1» (пожалуйста, убедитесь, что указанный регион поддерживается типом запуска Fargate)
Aws_account_id. AWS ID учетной записи. Эта информация требуется для развертывания.
Aws_resource_name_prefix. Предполагается, что некоторые из необходимых ресурсов AWS предполагаются в их именах. Значение должно соответствовать варианту переменной AWS_RESOURCE_PREFIX в Terraform_Setup / Terraform.tfvars.

5. Используйте Terraporm для создания инфраструктуры AWS

Нам нужно создать инфраструктуру AWS, необходимую для размещения нашего приложения. Это можно сделать вручную Следуя учебникам AWS Для этого, но террафом – это облачный агностический способ лечить кусочки необходимым. Этот подход позволяет нам легко создавать среды, которые идентичны – например, если мы хотели создать стек для нашей тестовой среды, которая отражает производственную среду.

Из примерного хранилища открываются и отредактируйте Terraform.tfvars Файл, расположенный в Облачные шаблоны каталог. Я добавил этот файл в .gitignore так, чтобы не случайно протолкнуть эти секреты на публичный репозиторий, но, пожалуйста, будьте осторожны на каждом толчке. Установите следующее на ваши определенные значения.

aws_access_key = ""
aws_secret_key = ""
aws_account_id = ""
aws_region     = ""

Как только это сделано, откройте сеанс терминала изнутри Облачные шаблоны каталог.

: terraform init
: terraform plan
: terraform apply

Это займет несколько минут. После этого у вас теперь будет необходимая инфраструктура для развертывания приложения к AWS.

6. Создать успешную сборку

После всей этой подготовки мы наконец готовы видеть волшебство! С нашей установкой репозитория, трубопровод на месте и инфраструктуре легают через террафору, все, что нам нужно сделать сейчас, это толкает изменение в главной ветви.

После того, как сборка зеленая, последний шаг – найти URL-адрес нашего приложения!

7. Просмотр приложения на AWS

Я уверен, что есть лучший способ сделать это, но я собираюсь пройти по шагам, которые я следовал, чтобы найти DNS запись записи, созданную AWS.

  • Войдите в консоль AWS
  • Перейти к службе EC2
  • Из левого меню выберите балансировщики нагрузки
  • Поле имени DNS для вашего балансировщика нагрузки

Здесь еще много, чтобы быть сделано здесь. Например, как мы включаем SSL? Я хотел, чтобы это было отправной точкой для создания конвейера CI/CD в AWS. Предоставлено мы только развернутыми «Привет, мир!» Применение, используемая набора инструментов, является сложным. Наличие примера позволяет нам усложнить сложность.

Оригинал: “https://dev.to/dev3l/dockerized-python-flask-app-to-aws-ecr-ecs-using-circleci-6ko”