Вопрос или проблема
Я пытаюсь развернуть проект 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
-
Выбор VPS-провайдера: Выберите подходящего провайдера VPS, предоставляющего сервер на Ubuntu. Например, это могут быть DigitalOcean, Hetzner или другой поставщик. Убедитесь, что у вашего плана достаточно ресурсов для вашей конкретной нагрузки.
-
Установка Ubuntu Server: После приобретения VPS вы, вероятно, получите возможность установить различные операционные системы. Выберите Ubuntu Server, поскольку он хорошо поддерживается и широко используется для развертывания Docker.
-
Обеспечение безопасности VPS: Настройте брандмауэр с помощью
ufw
, разрешив только необходимые порты (например, 22 для SSH, 80 и 443 для HTTP/HTTPS). Убедитесь, что SSH настроен безопасно и недоступен для прямого логина подroot
.
Установка Docker и Docker Compose
-
Установка 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
-
Установка 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
Развертывание приложения
-
Подготовка файлов Docker Compose: Убедитесь, что у вас есть корректный
docker-compose.yml
файл на вашем локальном компьютере. В нем должны быть прописаны все необходимые сервисы (например, .NET Web API и Blazor UI). -
Копирование файлов на VPS: Скопируйте ваш проект и файл
docker-compose.yml
на VPS черезscp
или другой инструмент для передачи файлов:scp -r /path/to/your/project user@your_vps_ip:/home/your_user/
-
Запуск Docker Compose: Перейдите в директорию с вашим проектом на VPS и выполните:
docker-compose up -d
Установка и настройка NGINX
-
Установка NGINX: На вашем VPS выполните:
sudo apt install nginx
-
Настройка обратного прокси на 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; } }
-
Активация конфигурации NGINX: Создайте символическую ссылку в
/etc/nginx/sites-enabled/
и перезапустите NGINX:sudo ln -s /etc/nginx/sites-available/your_project /etc/nginx/sites-enabled/ sudo systemctl restart nginx
Обеспечение безопасности соединения
- Установка Let’s Encrypt для HTTPS: Чтобы добавить SSL-сертификат, выполните:
sudo apt install certbot python3-certbot-nginx sudo certbot --nginx -d your_domain.com
Открытие проекта в Интернете
Теперь ваш проект должен быть доступен по доменному имени через HTTPS. Обеспечьте мониторинг работы серверов и безопасность данных на протяжении всего срока эксплуатации приложения.
Если вы планируете в будущем переход на Kubernetes, то NGINX и Docker Compose предоставляют отличную основу для постепенного освоения более сложных решений.