Polecenia w aplikacji (migracje, seedy)
Jak uruchamiać jednorazowe polecenia w kontenerach aplikacji, np. migracje bazy i dane startowe, bez dostępu SSH.
Do replik aplikacji nie logujesz się przez SSH. Jednorazowe zadania — migracje bazy, dane startowe, polecenia administracyjne — uruchamiasz w zakładce Polecenia. Wynik widzisz na żywo w panelu.
Uruchamianie polecenia
- Otwórz aplikację w https://cloud.hostava.pl i przejdź do zakładki Polecenia.
- W polu Usługa z Compose wybierz usługę, w której ma działać polecenie. Panel podpowiada nazwy z Twojego compose (jeśli masz usługę
migrate, wybierze ją domyślnie). - W polu Polecenie wpisz polecenie, np.
npm run db:migrate. - Wybierz tryb:
- Nowy kontener (zalecane) — panel uruchamia nowy kontener z obrazu tej usługi, ze zmiennymi z
.envaplikacji, a po zakończeniu go usuwa (odpowiednikdocker compose run --rm), - W działającym kontenerze — polecenie wykona się w już uruchomionym kontenerze usługi (odpowiednik
docker compose exec).
- Nowy kontener (zalecane) — panel uruchamia nowy kontener z obrazu tej usługi, ze zmiennymi z
- Przy kilku replikach możesz wybrać replikę z listy. Domyślnie to Pierwsza replika.
- Kliknij Uruchom (albo naciśnij Enter w polu polecenia).
Wynik pojawi się poniżej i odświeża się co kilka sekund. Status pokazuje trwa, zakończone (kod 0) albo błąd z kodem wyjścia.
Przykłady
# Node.js
npm run db:migrate
npm run db:seed
# Laravel
php artisan migrate --force
# Django
python manage.py migrate
# Rails
bin/rails db:migrate
Polecenie wykonuje się przez sh -c, więc możesz łączyć kroki, np. npm run db:migrate && npm run db:seed.
Kiedy który tryb
- Nowy kontener wybieraj do migracji i seedów. Nie obciąża działającej aplikacji i działa nawet wtedy, gdy główny kontener się restartuje. Przy pierwszym uruchomieniu pobranie obrazu może chwilę potrwać.
- W działającym kontenerze przydaje się, gdy potrzebujesz stanu żywego procesu, np. podejrzenia plików tymczasowych albo wyczyszczenia cache w pamięci kontenera. Usługa musi wtedy działać na wybranej replice.
Limity
- Naraz działa jedno polecenie na aplikację. Kolejne uruchomisz po zakończeniu poprzedniego.
- Polecenie może trwać najwyżej 1 godzinę. Po tym czasie zostanie przerwane z komunikatem „Przekroczono limit 1 godziny”.
- Polecenie może mieć do 4000 znaków.
- Panel pokazuje ostatnie ok. 60 KB wyniku.
- Polecenie działa tylko na replice, która jest uruchomiona.
Zadanie biegnie w tle na replice, więc zamknięcie karty przeglądarki go nie przerywa. Wrócisz do wyniku przez listę Historia.
Uwaga: Polecenia zmieniające bazę uruchamiaj raz, na jednej replice. Wszystkie repliki korzystają z tej samej bazy, więc migracja wykonana na każdej z nich osobno nic nie da, a może zaszkodzić.
Uwaga: Zmiany plików wykonane w trybie W działającym kontenerze nie są trwałe — znikną przy następnym wdrożeniu. Dotyczą też tylko jednej repliki.
Historia
Sekcja Historia pokazuje ostatnie 20 poleceń: status, usługę, treść, datę i osobę, która je uruchomiła. Kliknij wpis, aby zobaczyć jego wynik. Uruchomienie polecenia trafia też do dziennika aktywności konta.
Wskazówka: Typowy przepływ po wydaniu nowej wersji: wdrożenie z CI lub Wdróż ponownie, a potem migracja w zakładce Polecenia. Tryb Nowy kontener używa obrazu pobranego na replikę przy ostatnim wdrożeniu — dlatego najpierw wdróż nową wersję, a dopiero potem uruchom jej migracje.
Powiązane: Aplikacja z pliku Docker Compose, Zarządzane bazy danych.