У меня есть VPS, там nginx я поставил. Часто приходится поднимать небольшие веб-приложения и всяких ботов, эти приложения тестовые, комерчески нигде не используются, нагрузки особой не имеют, этот сервак просто для демок. И так как их количество растет, думаю над автоматизацией процесса.
Когда я хочу например задеплоить бота мой процесс такой.
1. Сбилдил образ -> запушил в registry. Например в docker.io
2. Запускаю образ на сервере с нужными переменными окружения на определенном порту
docker run --name=jokebot -d -e VK_ACCESS_TOKEN=<token> -p <deploy_port>:80 delgus/jokebot
Например выберу свободный порт 5000 и получается что контейнер слушает на 127.0.0.1:5000
3. Собственно настройка nginx. Добавляю конфиг для нового поддомена (разворачиваю каждое новое приложение на новом поддомене моего домена )
в sites-available
server {
listen 80;
listen 443 ssl http2;
server_name sub.domain.com;
ssl_certificate /etc/letsencrypt/live/domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/domain.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/domain.com/chain.pem;
ssl_stapling on;
ssl_stapling_verify on;
resolver 127.0.0.1 8.8.8.8;
location / {
proxy_pass http://127.0.0.1:5000;
}
location /.well-known {
root /var/www/letsencrypt;
}
}
потом создаю символическую ссылку на sites-enabled и делаю service nginx reload
потом иду переделывать серт через letsencrypt bot.
При таком способе деплоя возникают проблемы.
1. одна и та же работа по созданию поддомена (в теории можно написать скрипт который сам будет это делать, но возможно есть уже готовое решение)
2. мне не нравится что можно в обход nginx открыть приложение по адресу my_server_ip:5000.
3. когда приложений будет больше я запутаюсь в портах которые отдал разным приложениям.
Поэтому я начинаю задумываться о каком то легком средстве для оркестрации контейнеров, ну или о каком-то более удобном способе организации всего это.
Приложения в контейнерах в основном написаны на golang. Nginx я использую просто как прокси получается.
Насколько плох мой метод деплоя? есть ли лучшие варианты?
На моем серваке всего 1 Гб оперативы потому что моим приложухам много и не надо, поэтому не вижу смысла в каких то громоздких вещах типа kubernetes и docker swarm.
Что посоветуете?
PS. сильно не ругайтесь, я back а не devops