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.
Spis treści
Budowanie obrazu
Do szybkiego budowania obrazu posługuję się następującym skryptem (plikiem wsadowym bat).
1 2 3 4 5 6 7 8 9 |
@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.
1 2 3 4 5 6 |
@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.
1 2 |
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

Efektywne zarządzanie Protocoll Buffers z “Buf”. Wszystko, co powinieneś wiedzieć

Czy Scala to wciąż dobry język dla programistów w 2023 roku?

Qt – wszystko, co powinieneś wiedzieć na temat najpopularniejszego frameworka C++

Jak tworzyć dokumentację? Doświadczenia Software Engineera

Odczarowujemy PHP - fakty, mity i plotki

GraphQL to ciekawostka w cv czy must have?

Zarobki w IT za granicą. Na jaką pensję może liczyć dev w Niemczech, Austrii, Szwajcarii i Holandii?
