Хочеш додати бота для discord, чи якийсь додаток для NU31. Перше подумай чи може це бути частиною Space - тут зараз вже є наш сайт, і камабот що в discord. Якщо може бути просто частиною проєкту spcae, в такому випадку тобі не треба думати про хостинг, базу даних, доступа, бекапи і все інше. Проєкт написаний на Nuxt + type script, вже має інтеграцію з discord, підключення до mongo для зберігання текстової інфомації так і файлів через GridFS. Якщо треба додати щось по типу background job, то можеш просто завести його окремій парці проєкту з своїм docker image.
Це не підходить, треба окремо - OK, В нас вже все для цього є :)
Вимоги до проєкту наступні:
- Проєкт має DockerImage
- Проєкт частина організації NU31
Ми використовуємо підхід Infrastructure as a code. Реалізований через docker stack. Все вже зроблено для вас, просто скоріюй декілька файлів з репозиторія Space до себе в проект.
- docker-stack.yml
- .github/workflows/publish.yml
Модифікація docker stack файла
- Заміни зміні в блоціenvironment на потрібні тобі.
- Якщо ти автор додатку який не може бути одночастно запушений в двох екземплярах, заміни order з start-first на stop-first.
Зміни в github action файлі (publish.yml)
- Якщо основна гілка твого проєкту не main - заміни на актуальну назву рядок 6
- Зміни список evnvar який буде актуальний для твого проєкту, блок env.
Зміні в частині # Deployment configuration міняти не потрібно, і додавати їх в налаштуваннях проєкту в github теж не потрібно. Вони додані на рівні організації nu31hackerspace. На сервері вже піднята mongo на reverse proxy якщо потрібні заміни в mongo або caddy звернися до Vova Stelmashchuk. Всі vars та secrets що потрібні твому додатку додай в GitHub -> Settings -> Actions -> New secret / New variable
Якщо твій проєкт не в організації nu31hackerspace, можеш звернутися до Vova Stelmashchuk для додавання private ssh key на host ip для твого репозиторію.