Облачная платформаEvolution

Запуск контейнеризированного приложения на виртуальной машине с помощью Docker и Docker Compose


С помощью этого руководства вы соберете контейнерное приложение и запустите его на виртуальной машине.

Вы будете использовать следующие сервисы:

  • Виртуальная машина free tier — сервис, в рамках которого предоставляется бесплатная виртуальная машина с готовой конфигурацией.

  • «Публичные IP» — сервис для организации доступа к приложению из интернета.

  • Docker — система контейнеризации.

  • Docker Compose — инструмент для запуска и управления Docker-контейнерами.

Шаги:

Перед началом работы

Если вы уже зарегистрированы, войдите под своей учетной записью.

1. Разверните ресурсы в облаке

На этом шаге вы создадите бесплатную виртуальную машину, назначите ей публичный IP-адрес и настроите правила фильтрации трафика через него.

  1. Создайте бесплатную виртуальную машину со следующими параметрами:

    • Названиеdocker-server.

    • Образ — на вкладке Публичные выберите образ Ubuntu 22.04.

    • Публичный IP — оставьте Арендовать новый или выберите IP-адрес из списка арендованных.

    • Логин — оставьте значение по умолчанию или укажите новый.

    • Метод аутентификации — выберите Публичный ключ.

    • Публичный ключ — укажите ключ, созданный ранее.

    • Остальные параметры оставьте по умолчанию или выберите на свое усмотрение.

  2. Уточните зону доступности, в которой была создана виртуальная машина.

  3. Создайте группу безопасности с названием docker-server в той же зоне доступности и добавьте в нее правила:

    Трафик

    Протокол

    Порт

    Тип источника/адресата

    Источник/Адресат

    Входящий

    TCP

    80

    IP-адрес

    0.0.0.0/0

    Исходящий

    Любой

    IP-адрес

    0.0.0.0/0

  4. Проверьте создание ресурсов:

    1. Убедитесь, что в личном кабинете на странице Сети → Группы безопасности отображается группа безопасности docker-server со статусом «Создана».

    2. Убедитесь, что в личном кабинете на странице Инфраструктура → Виртуальные машины отображается виртуальная машина docker-server со статусом «Запущена». Виртуальной машине назначен публичный IP-адрес.

    3. Скопируйте и сохраните публичный IP-адрес, он понадобится далее.

2. Настройте виртуальную машину

На этом шаге вы установите необходимые пакеты и подготовите среду.

  1. Обновите систему и установите утилиты:

    sudo apt update && sudo apt upgrade -y
  2. Установите Python:

    sudo apt-get install python3 python3-pip -y
  3. Проверьте установку:

    python3 --version & pip --version
  4. Установите Docker:

    curl -fsSL get.docker.com -o get-docker.sh && sudo sh get-docker.sh

3. Создайте и запустите контейнер с помощью средств Docker

  1. Создайте директорию containerapp и перейдите в нее. В командной строке выполните команду:

    mkdir containerapp && cd containerapp
  2. Создайте файл Dockerfile:

    sudo nano Dockerfile
  3. В открывшемся редакторе nano вставьте текст:

    FROM tiangolo/uwsgi-nginx-flask:python3.12
    COPY ./app /app
  4. Нажмите комбинацию клавиш Ctrl + O, чтобы сохранить файл.

  5. Нажмите комбинацию клавиш Ctrl + X, чтобы выйти из редактора nano.

  6. Создайте директорию для приложения app и перейдите в нее:

    mkdir app && cd app
  7. Создайте python-файл приложения:

    sudo nano main.py
  8. В открывшемся окне редактора вставьте код:

    from flask import Flask
    app = 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)
  9. Вернитесь в директорию containerapp c помощью команды cd ...

  10. Соберите образ контейнера:

    sudo docker build -t containerapp .
  11. После того как сборка образа закончится, запустите контейнер на виртуальной машине:

    sudo docker run -d --name containerapp -p 80:80 containerapp
  12. Убедитесь, что созданный мини-сайт доступен по публичному адресу виртуальной машины. В браузере перейдите по адресу http://<IP-adress>, где <IP-adress> — публичный IP-адрес виртуальной машины.

    Откроется страница с текстом «Hello World from Flask».

4. Создайте приложение с помощью Docker Compose

  1. Остановите и удалите контейнер Docker. В командной строке выполните команду:

    sudo docker rm -f containerapp
  2. Установите docker-compose:

    sudo apt install docker-compose
  3. Создайте файл docker-compose в директории containerapp:

    sudo nano docker-compose.yaml
  4. Вставьте в созданный файл описание создаваемого контейнера:

    version: '3.8'
    services:
    flask-app:
    image: tiangolo/uwsgi-nginx-flask:python3.12
    ports:
    - "80:80"
    volumes:
    - ./app/main.py:/app/main.py
  5. Запустите контейнер с помощью docker-compose:

    sudo docker-compose up -d flask-app
  6. Убедитесь, что приложение успешно запущено, — в браузере перейдите по адресу http://<IP-adress>, где <IP-adress> — публичный IP-адрес виртуальной машины.

    Откроется страница с текстом «Hello World from Flask».

Результат

Вы создали виртуальную машину и запустили контейнерное приложение с помощью Docker и Docker Compose.