Как развернуть проект Docker Compose на VPS и сделать его доступным в интернете БЕЗ использования облачных провайдеров?

Вопрос или проблема

Я пытаюсь развернуть проект Docker Compose, который оркестрирует .NET 8 WEB API и Blazor 8 UI.

Я хочу избежать использования облачных провайдеров, таких как Azure, AWS, Google Cloud и всех других “Azure Container Service” и “Amazon Kubernetes и т.д.” вместе, а большинство ответов на эту тему в сети ссылаются на них.

Я планировал использовать дешевый VPS с установленным Ubuntu Server и развернуть его оттуда.

Я просто не могу понять, как сделать его “доступным онлайн”. На этом этапе я знаю, как защитить сервер, сеть, и код работает нормально, также у меня есть доменное имя.

Мое замешательство заключается в том, что кажется, что это может работать на каком-то сервисе типа Docker Hub, но я хочу, чтобы мой проект был приватным и доступным только для меня. Я не знаю, если для этого используется NGINX (никогда его не использовал) или есть другой способ.

На данный момент мне нужен способ развернуть мой Docker Compose онлайн, но в будущем я собираюсь изучить Kubernetes и развернуть кластер, но это будет позже. Сейчас я ищу простоту и скорость.

Спасибо, ребята!

Ответ или решение

Для развертывания проекта Docker Compose на VPS и его публикации в интернете без использования облачных провайдеров, выполните следующие шаги:

Подготовка VPS

  1. Выбор VPS-провайдера: Выберите подходящего провайдера VPS, предоставляющего сервер на Ubuntu. Например, это могут быть DigitalOcean, Hetzner или другой поставщик. Убедитесь, что у вашего плана достаточно ресурсов для вашей конкретной нагрузки.

  2. Установка Ubuntu Server: После приобретения VPS вы, вероятно, получите возможность установить различные операционные системы. Выберите Ubuntu Server, поскольку он хорошо поддерживается и широко используется для развертывания Docker.

  3. Обеспечение безопасности VPS: Настройте брандмауэр с помощью ufw, разрешив только необходимые порты (например, 22 для SSH, 80 и 443 для HTTP/HTTPS). Убедитесь, что SSH настроен безопасно и недоступен для прямого логина под root.

Установка Docker и Docker Compose

  1. Установка Docker: Подключитесь к вашему VPS через SSH и выполните:

    sudo apt update
    sudo apt install apt-transport-https ca-certificates curl software-properties-common
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
    sudo apt update
    sudo apt install docker-ce
  2. Установка Docker Compose: Выполните:

    sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    sudo chmod +x /usr/local/bin/docker-compose

Развертывание приложения

  1. Подготовка файлов Docker Compose: Убедитесь, что у вас есть корректный docker-compose.yml файл на вашем локальном компьютере. В нем должны быть прописаны все необходимые сервисы (например, .NET Web API и Blazor UI).

  2. Копирование файлов на VPS: Скопируйте ваш проект и файл docker-compose.yml на VPS через scp или другой инструмент для передачи файлов:

    scp -r /path/to/your/project user@your_vps_ip:/home/your_user/
  3. Запуск Docker Compose: Перейдите в директорию с вашим проектом на VPS и выполните:

    docker-compose up -d

Установка и настройка NGINX

  1. Установка NGINX: На вашем VPS выполните:

    sudo apt install nginx
  2. Настройка обратного прокси на NGINX: Создайте файл конфигурации, например, /etc/nginx/sites-available/your_project, и пропишите там настройки:

    server {
       listen 80;
       server_name your_domain.com;
    
       location / {
           proxy_pass http://localhost:порт_вашего_приложения;
           proxy_set_header Host $host;
           proxy_set_header X-Real-IP $remote_addr;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           proxy_set_header X-Forwarded-Proto $scheme;
       }
    }
  3. Активация конфигурации NGINX: Создайте символическую ссылку в /etc/nginx/sites-enabled/ и перезапустите NGINX:

    sudo ln -s /etc/nginx/sites-available/your_project /etc/nginx/sites-enabled/
    sudo systemctl restart nginx

Обеспечение безопасности соединения

  1. Установка Let’s Encrypt для HTTPS: Чтобы добавить SSL-сертификат, выполните:
    sudo apt install certbot python3-certbot-nginx
    sudo certbot --nginx -d your_domain.com

Открытие проекта в Интернете

Теперь ваш проект должен быть доступен по доменному имени через HTTPS. Обеспечьте мониторинг работы серверов и безопасность данных на протяжении всего срока эксплуатации приложения.

Если вы планируете в будущем переход на Kubernetes, то NGINX и Docker Compose предоставляют отличную основу для постепенного освоения более сложных решений.

Оцените материал
Добавить комментарий

Капча загружается...