С помощью этого руководства вы соберете контейнерное приложение и запустите его на виртуальной машине.
Вы будете использовать следующие сервисы:
Виртуальная машина free tier — сервис, в рамках которого предоставляется бесплатная виртуальная машина с готовой конфигурацией.
«Публичные IP» — сервис для организации доступа к приложению из интернета.
Docker — система контейнеризации.
Docker Compose — инструмент для запуска и управления Docker-контейнерами.
Шаги:
Если вы уже зарегистрированы, войдите под своей учетной записью.
На этом шаге вы создадите бесплатную виртуальную машину, назначите ей публичный IP-адрес и настроите правила фильтрации трафика через него.
Загрузите публичный ключ в облако.
Создайте бесплатную виртуальную машину со следующими параметрами:
Название — docker-server.
Образ — на вкладке Публичные выберите образ Ubuntu 22.04.
Публичный IP — оставьте Арендовать новый или выберите IP-адрес из списка арендованных.
Логин — оставьте значение по умолчанию или укажите новый.
Метод аутентификации — выберите Публичный ключ.
Публичный ключ — укажите ключ, созданный ранее.
Остальные параметры оставьте по умолчанию или выберите на свое усмотрение.
Уточните зону доступности, в которой была создана виртуальная машина.
Создайте группу безопасности с названием docker-server в той же зоне доступности и добавьте в нее правила:
Трафик | Протокол | Порт | Тип источника/адресата | Источник/Адресат |
|---|---|---|---|---|
Входящий | TCP | 80 | IP-адрес | 0.0.0.0/0 |
Исходящий | Любой | — | IP-адрес | 0.0.0.0/0 |
Проверьте создание ресурсов:
Убедитесь, что в личном кабинете на странице Сети → Группы безопасности отображается группа безопасности docker-server со статусом «Создана».
Убедитесь, что в личном кабинете на странице Инфраструктура → Виртуальные машины отображается виртуальная машина docker-server со статусом «Запущена». Виртуальной машине назначен публичный IP-адрес.
Скопируйте и сохраните публичный IP-адрес, он понадобится далее.
На этом шаге вы установите необходимые пакеты и подготовите среду.
Обновите систему и установите утилиты:
sudo apt update && sudo apt upgrade -y
Установите Python:
sudo apt-get install python3 python3-pip -y
Проверьте установку:
python3 --version & pip --version
Установите Docker:
curl -fsSL get.docker.com -o get-docker.sh && sudo sh get-docker.sh
Создайте директорию containerapp и перейдите в нее. В командной строке выполните команду:
mkdir containerapp && cd containerapp
Создайте файл Dockerfile:
sudo nano Dockerfile
В открывшемся редакторе nano вставьте текст:
FROM tiangolo/uwsgi-nginx-flask:python3.12COPY ./app /app
Нажмите комбинацию клавиш Ctrl + O, чтобы сохранить файл.
Нажмите комбинацию клавиш Ctrl + X, чтобы выйти из редактора nano.
Создайте директорию для приложения app и перейдите в нее:
mkdir app && cd app
Создайте python-файл приложения:
sudo nano main.py
В открывшемся окне редактора вставьте код:
from flask import Flaskapp = Flask(__name__)@app.route("/")def hello():return "Hello World from Flask"if __name__ == "__main__":app.run(host='0.0.0.0', debug=True, port=80)
Вернитесь в директорию containerapp c помощью команды cd ...
Соберите образ контейнера:
sudo docker build -t containerapp .
После того как сборка образа закончится, запустите контейнер на виртуальной машине:
sudo docker run -d --name containerapp -p 80:80 containerapp
Убедитесь, что созданный мини-сайт доступен по публичному адресу виртуальной машины. В браузере перейдите по адресу http://<IP-adress>, где <IP-adress> — публичный IP-адрес виртуальной машины.
Откроется страница с текстом «Hello World from Flask».
Остановите и удалите контейнер Docker. В командной строке выполните команду:
sudo docker rm -f containerapp
Установите docker-compose:
sudo apt install docker-compose
Создайте файл docker-compose в директории containerapp:
sudo nano docker-compose.yaml
Вставьте в созданный файл описание создаваемого контейнера:
version: '3.8'services:flask-app:image: tiangolo/uwsgi-nginx-flask:python3.12ports:- "80:80"volumes:- ./app/main.py:/app/main.py
Запустите контейнер с помощью docker-compose:
sudo docker-compose up -d flask-app
Убедитесь, что приложение успешно запущено, — в браузере перейдите по адресу http://<IP-adress>, где <IP-adress> — публичный IP-адрес виртуальной машины.
Откроется страница с текстом «Hello World from Flask».
Вы создали виртуальную машину и запустили контейнерное приложение с помощью Docker и Docker Compose.