Я провел некоторое время вчера, получив питон Колбу Приложение в 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”