Django Academy · Lekcja

Entrypointy, migracje i collectstatic

Uruchamianie kroków startowych wewnątrz kontenera

Lekcja 3 z 413 kroki

Entrypointy, migracje i collectstatic to bezpłatna lekcja Django Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Django Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Django Academy zawiera 4 lekcji w sumie.

Znaczenie kroków uruchamiania

Zanim kontener zacznie obsługiwać ruch, często musi uruchomić migracje i zebrać pliki statyczne. Zautomatyzujmy te kroki uruchamiania. ⚙️

Czym jest entrypoint

entrypoint to skrypt uruchamiany przy każdym starcie kontenera, tuż przed przejęciem sterowania przez główne polecenie.

Napisz skrypt

Utwórz plik entrypoint.sh z linią shebang, aby kontener wiedział, że ma uruchomić go za pomocą powłoki.

#!/bin/sh
set -e

Stosowanie migracji przy uruchamianiu

Uruchom migrate w entrypoint, aby schemat bazy danych był zawsze aktualny w chwili uruchomienia aplikacji.

python manage.py migrate --noinput

Zbieranie plików statycznych

Uruchom collectstatic, aby skopiować pliki CSS i JS do jednego folderu, który serwer może udostępniać na produkcji.

python manage.py collectstatic --noinput

Przekazanie sterowania za pomocą exec

Zakończ skrypt poleceniem exec, aby aplikacja stała się procesem 1 i poprawnie odbierała sygnały zatrzymania.

exec "$@"

Nadanie uprawnień do wykonywania

Ustaw w Dockerfile skrypt jako wykonywalny, aby kontener mógł go rzeczywiście uruchomić podczas startu.

RUN chmod +x entrypoint.sh

Połączenie w Dockerfile

Wskaż skrypt w ENTRYPOINT, a następnie pozostaw CMD jako polecenie, które ma zostać wykonane na końcu.

ENTRYPOINT ["./entrypoint.sh"]
CMD ["gunicorn", "config.wsgi"]

Dlaczego --noinput

Flaga --noinput uniemożliwia Django zatrzymywanie się w oczekiwaniu na odpowiedzi, co jest niezbędne podczas bezobsługowego uruchamiania kontenerów.

Oczekiwanie na bazę danych

Postgres może uruchamiać się powoli, dlatego przed wykonaniem migracji warto poczekać na port db, aby uniknąć błędów połączenia.

until nc -z db 5432; do sleep 1; done

Obserwowanie logów

Użyj docker compose logs, aby potwierdzić, że podczas uruchamiania wykonano migracje i zebrano pliki statyczne.

docker compose logs -f web

Szybkie sprawdzenie

Dlaczego skrypt entrypoint powinien kończyć się poleceniem exec uruchamiającym główne polecenie?

Podsumowanie

Twój entrypoint uruchamia teraz migrate i collectstatic z opcją --noinput, czeka na db, a następnie wykonuje aplikację za pomocą exec jako PID 1. Za każdym razem gotowa do uruchomienia. ✅

Bezpłatny start

Ucz się Python dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
30
Lekcje
120

Często zadawane pytania

Czy lekcja „Entrypointy, migracje i collectstatic” jest bezpłatna?

Tak — pełny tekst „Entrypointy, migracje i collectstatic” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Django Academy, przejdź na CoddyKit PRO. Kurs Django Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Entrypointy, migracje i collectstatic”?

Uruchamianie kroków startowych wewnątrz kontenera Ćwiczysz Django Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Django Academy?

Nie wymagamy żadnego doświadczenia. Django Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „Entrypointy, migracje i collectstatic”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Django Academy?

Tak. Każda lekcja Django Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Pisanie Dockerfile dla Django
  2. docker-compose z Postgres i Redis
  3. Entrypointy, migracje i collectstatic
  4. Dobre praktyki dotyczące obrazu produkcyjnego
← Powrót do Django Academy