Backend, Praca w IT

Docker tip & scripts, czyli jak pracuję z kontenerami

Pisząc oprogramowanie w .NET Core, które z założenia ma być uruchamiane w chmurze, na pewno będzie podlegało konteneryzacji. Niniejszy wpis nie będzie jednak o tym, jak tworzyć kontenery, lecz o tym jak szybko je budować oraz uruchamiać, a w razie konieczności wyłączać i czyścić. Każdy z przedstawionych poniżej przykładów sprawdziłem i szczerze polecam.

Łukasz Kurzyniec. Full Stack developer w PGS Software. Pasjonat nowych technologii, entuzjasta JavaScript. Na co dzień pracuje w technologiach webowych ASP.NET Web API oraz .NET Core. Programowaniem zajmuje się od początku studiów – to właśnie wtedy połknął przysłowiowego bakcyla. Przez cały czas sprawia mu to wiele przyjemności oraz satysfakcji, ponieważ lubi kombinować i widzieć efekty swojej pracy. Po godzinach prowadzi bloga kurzyniec.pl, w którym dzieli się swoimi doświadczeniami dotyczącymi pracy .netowca.


Budowanie obrazu

Do szybkiego budowania obrazu posługuję się następującym skryptem (plikiem wsadowym bat).

@ECHO OFF
SET configurationsApiRootFolder=C:GIThappycode.configurations.api
 
cd %configurationsApiRootFolder%
 
git checkout develop
git pull
 
docker build -f src/happycode.Configurations.Api/Dockerfile -t configurations-api:dev .

Powyższy skrypt w pierwszej kolejności tworzy zmienną ze ścieżką bezwzględną do folderu z repozytorium (2). Następnie przechodzi do tego folderu (4). Potem pobiera najnowsze kody źródłowe z repozytorium (6 i 7). Na koniec uruchamia komendę docker build z odpowiednimi parametrami w celu zbudowania obrazu aplikacji (9). Pierwszy parametr --file, -f to ścieżka do pliku z instrukcjami, tzw. dockerfile. Kolejny parametr --tag, -t to nazwa i tag obrazu, pod którą będzie można zidentyfikować obraz w repozytorium obrazów. Ostatni parametr . (kropka) definiuje kontekst – obecny folder ze wszystkimi plikami zostanie wysłany do procesu tworzenia obrazu.

Po wykonaniu powyższego skryptu konsola wyświetli komunikat z informacje iż obraz został zbudowany i oznaczony.

Uruchamianie kontenera

Poniższy skrypt uruchamia ówcześnie zbudowany obraz.

@ECHO OFF
SET configurationsApiRootFolder=C:GIThappycode.configurations.api
 
cd %configurationsApiRootFolder%
 
docker run -d -e AWS_ACCESS_KEY_ID=ABC123 -e AWS_SECRET_ACCESS_KEY=abcde12345 -e AWS_DEFAULT_REGION=us-east-1 -p 5001:80 configurations-api:dev

Tutaj ponownie skrypt ustawia ścieżkę bezwzględną repozytorium (2) oraz przechodzi do tej lokalizacji (4). Ostatnia komenda docker run uruchomienia kontener (6). Pierwszy parametr --detach, -d uruchamia kontener w tle i zwraca jego ID. Drugi parametr --env, -e ustawia zmienne środowiskowe, w moim przypadku są to klucze dostępu do chmury AWS. Trzeci parametr --publish, -p odpowiedzialny jest za zmapowanie portów aplikacji w kontenerze z portami naszego systemu. Na końcu komendy znajduje się nazwa i tag obrazu, który chcemy uruchomić.

Po wykonaniu powyższego skryptu, zgodnie z parametrem -d, otrzymamy ID kontenera. Wykonując komendę docker container ls możemy wylistować uruchomione kontenery i potwierdzić, że nasz kontener “wstał i ma się dobrze”.

Czasami zdarzy się, że kontener nie chce się uruchomić. W takich sytuacjach należy czytać komunikaty zwracane przez proces docker, ponieważ znajdziemy w nich ich przyczyny. W niektórych przypadkach problem rozwiązuje wyczyszczenie repozytorium i zbudowanie obrazu na nowo, w innych lekarstwem okazuje się ponowne uruchomienie komputera.

Czyszczenie kontenerów

Ostatni, krótki skrypt robi dwie proste rzeczy – zatrzymuje uruchomione kontenery, a następnie czyści repozytorium.

powershell docker container stop $(docker container ls -a -q)
powershell docker container rm $(docker container ls -a -q)

Skrypt uruchamia proces powershell, w którym przy pomocy przetwarzania potokowego wykonuje komendę docker container ls z parametrem --all, -a odpowiedzialnym za wylistowanie wszystkich kontenerów oraz parametrem --quiet, -q, który mówi procesowi docker iż lista ma zawierać tylko i wyłącznie ID kontenerów. Dla każdego zwróconego ID kontenera uruchamiana jest w pierwszej kolejności komenda docker container stop do zatrzymania kontenera, a następnie komenda docker container rm odpowiedzialna za usunięcie kontenera z repozytorium.

Po wykonaniu powyższego skryptu dostajemy listę zatrzymanych, a następnie usuniętych kontenerów.

Tip

Powyższe skrypty trzymam w lokalizacji c:docker. Skrypty nazywają się odpowiednio !build_configurations_api.bat, !run_configurations_api.bat oraz !clean_containers.bat (tak, nazwa każdego z plików rozpoczyna się wykrzyknikiem). Ścieżkę c:docker dodaną mam do zmiennej środowiskowej Path. Dzięki temu w dowolnej lokalizacji wpisuję wykrzyknik, klikam TAB na klawiaturze i w szybki sposób mogę przeiterować po wszystkich skryptach, a następnie uruchomić jeden z nich.

A Wy macie jakieś przydatne porady, skrypty? Podzielcie się proszę w komentarzu, chętnie wypróbuję i zaadaptuję.


Artykuł został pierwotnie opublikowany na blogu autora. Do przygotowania zdjęcia głównego wykorzystano grafikę pochodzącą z pexels.com.

Podobne artykuły

[wpdevart_facebook_comment curent_url="https://geek.justjoin.it/docker-tip-scripts-czyli-pracuje-kontenerami/" order_type="social" width="100%" count_of_comments="8" ]