Deploy
Krótki poradnik jak postawić apkę Adonisową (i nie tylko) na Coolify korzystając z GitHub App (autodeploy)
Repozytorium
Jeśli macie gotowy projekt i repo na Solvrowskim GitHubie to możecie śmiało zdeploywać waszą apkę.
Dockerfile (obligatoryjnie)
Coolify używa Nixpacka, który na podstawie drzewa projektu jest w stanie wygenerować obraz kontenera, który będzie chodził potem na serwerze.
Niestety, Adonisa za pomocą nixpacka tak łatwo nie postawicie, więc musicie stworzyć dockerfile’a - co nie jest zbyt skomplikowane.
Dockerfile najlepiej umieścić w rootcie projektu o nazwie Dockerfile
(tak domyślnie Coolify szuka dockerfile’a). Pamiętajcie, żeby pushnąć dockerfile’a do repo na GitHubie.
Link do dockerfile’a z adonisowej dokumentacji, który możecie dostosować do swoich potrzeb:
https://docs.adonisjs.com/guides/getting-started/deployment#creating-a-docker-image
Coolify
Crème de la crème, dostępny pod adresem https://devops.solvro.pl - o dostępy do zarządu
Widok projektów - wszystkie projekty postawione na Coolify
Każdy projekt ma swoje zasoby (Resources), które składają się na cały system projektu
Baza danych
W naszym przypadku używamy Postgresql, tu nie ma większej filozofii, wystarczy się przeklikać i Coolify wszystko za nas ogarnie.
-
Klikamy
New
i tworzymy nowy resource -
Wybieramy PostgresSQL
-
Wybieramy serwer
- localhost - typowo produkcyjny serwer, dostępny pod adresami
*.solvro.pl
- Seohost - ma więcej ramu i wrzucamy tam mniej ważne projekty albo projekty członków, dostępny pod adresami
*.s.solvro.pl
- localhost - typowo produkcyjny serwer, dostępny pod adresami
-
Wybieramy domyślnego Postgresa
-
Ewentualnie zmieniamy nazwę na ładniejszą
-
Można odpalać 🚀
Ważne dane, które będą potrzebne do envów na backendzie:
- Username
- Password
- PostgresSQL URL (internal)
- postgres://{username}:{password}@{host}:{port}/{database}
Aplikacja
Tworzenie resource’a
-
Klikamy
New
i tworzymy nowy resource -
Wybieramy Private Repository (with GitHub App) - nie sugerujcie się nazwą, z publicznym repo będzie działać
-
Wybieramy serwer
- localhost - typowo produkcyjny serwer, dostępny pod adresami
*.solvro.pl
- Seohost - ma więcej ramu i wrzucamy tam mniej ważne projekty albo projekty członków, dostępny pod adresami
*.s.solvro.pl
- localhost - typowo produkcyjny serwer, dostępny pod adresami
-
Wybieramy Github App
-
Wybieramy repozytorium
-
Wybieramy brancha, którego Coolify ma deployować
Wybieramy jak Coolify ma tworzyć obraz kontenera (zawsze Dockerfile przy Adonisie) -
Czas na konfigurację 🚀
General
Po udanym procesie tworzenia resource’a powinniście ujrzeć następujący widok
Na początku warto zmienić nazwę na bardziej czytelną, zmienić domenę {poddomena}.solvro.pl, ewentualnie dodać opis.
Przykład:
Jeśli macie monorepo to warto też zmienić Base Directory, jeśli macie np. w jednym repo frontend i backend.
Przykład z Planera 🔥:
Network
Ports Exposes jest istotny, domyślnie Adonis słucha na porcie 3333 - jeśli ustawiliście inny w env-ach to zmieńcie na ten z env-ów.
Porst mappings - jeśli nie macie konkretnych powodów, to nie zmieniajcie mapowania portów do hosta.
Zakładka Pre/Post Deployment Commands jest użyteczna, jeśli chcecie, żeby po każdym deployu jakaś akcja się wykonała - w naszym przypadku wykonujemy migracje:
Advanced
W advance’ach warto zaznaczyć Preview Deployments co pozwoli na sprawdzenie działania aplikacji po otworzeniu pull requestu na repo. Ostatnio (11.2024) Bartosz pisał, że automatyczne preview deployments są wyłączone i jeśli chcemy zrobić preview deployment, to musimy sobie wyklikać.
Preview deployments
Zmienne środowiskowe
Kolejna ważna zakładka, Enviroment Variables - tu ustawiacie niezbędne zmienne środowiskowe.
Polecam wejść w widok developerski, przekleić envy z folderu projektu adonisa i poustawiać odpowiednie wartości:
Dane do zmiennych zaczynających się od DB_{zmienna} wyciągacie z bazy którą uprzednio utworzyliście, wszystkie dane możecie wyciągnąć z URL’a bazy:
postgres://{username}:{password}@{host}:{port}/{database}
Jeśli nie chcecie ręcznie przeklejać danych z url’a możecie poprosić Gepetto albo Kloda (jest to względnie bezpieczne)
Source
W Sourcie mozecie wybrać brancha, którego chcecie deployować.
Health checks
Jeśli nie chcecie mieć irytującego warningu koło statusu resource’a to możecie ustawić healthchecki https://coolify.io/docs/knowledge-base/health-checks/
Deployments
Zdarzyć się może, że w trakcie deploy-u co się wykrzaczy - na ratunek przychodzi zakładka Deployments, w której możecie sprawdzić logi wszystkich deploy-ów i naprawić usterkę.
Terminal
Jeśli macie uprawnienia admina to, macie możliwość połączenia się do kontenera przez terminal. Można to zrobić na 2 sposoby:
- Będąc w resourcie przejść do zakładki Terminal - jeśli mamy więcej niż 1 deploy, to trzeba wybrać, do którego kontenera chcemy się połączyć.
- Kliknąć na sidebarze w Terminal, a następnie wybrać kontener (z wszystkich dostępnych na serwerze), do którego chcemy się połączyć.
Po więcej szczegółów: https://coolify.io/docs/