Od Zera do Dockera: Docker i Chmury

W poprzednim odcinku, mogliście przeczytać na temat stworzenia projektu w asp.net core, Depedency Injection oraz innych niuansach. Dzisiaj przejdziemy do części praktycznej -> użycie jej.

Docker

Czym jest, jak się to je – jest to mikro obraz konkretnego środowiska, z daną wersją i w danym projekcie otwartym na konkretnym porcie. Wspierany jest przez wiele platform i firm, które udostępniają swoje obrazy na dockercloud. Dla przykładu, użyty przez nas asp.net core, serwery php, rabbitMQ czy bazy MySQL.

Dockerfile

Dockerfile to taki plik, za pomocą którego konfigurujemy, jakie pliki ma wrzucić w obraz oraz jak uruchomić nasz projekt, czy opcjonalnie, na którym porcie, dla przykładu kod dla czyjebnie w dockerfile wygląda tak:
[code]
//Bazowy obraz, na którym opieramy nasz kod. Tutaj, z racji projektu w asp.net core, użyłem obrazu od MS:
FROM microsoft/dotnet:latest
//Wirtualny folder z projektm
RUN mkdir -p /usr/src/microservice
WORKDIR /usr/src/microservice
COPY . /usr/src/microservice
//polecenie do przywrocenia zaleznosci np z nuget
RUN dotnet restore pl.czyjebnie.csproj
//Uruchomienie
ENTRYPOINT [ „dotnet”, „run” ]
//Parametry
CMD [ „5000” ]
[/code]
Jak widać, to nie jest trudne 😉

Instalacja Dockera na Ubuntu

Instalacja na VM z systemem Ubuntu jest mniej prosta, niż odpowiednik spod znaku jabłuszka oraz okienka, ale nie jest bardzo skomplikowana i można to rozwiązać za pomocą paru komend, znanymi każdemu użytkownikowi tej dystrybucji:
[code]
$ sudo apt-get update
$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add –
$ sudo add-apt-repository \
„deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable”
$ sudo apt-get update
i na koniec:
$ sudo apt-get install docker-ce
[/code]
No i tyle, Docker znajduje się na naszej maszynie.

Wrzucenie obrazu na dedykowana maszynę i przygotowanie obrazu na podstawie Repozytorium

Podstawa, każdego programisty, zwłaszcza pracującego w teamie. Repozytorium. Nie polecam SVN, wolę GIT.. bo GIT jest GIT 🙂
Daje też dodatkowo szanse, na użycie wielu narzędzie do Continuous Integration ( m.in do automatycznego budowania obrazu na dockercloud, stron na serwerach azure oraz grach na Unity Cloud Build. No i mądry Polak po formacie ! 🙂
Zacznijmy od tego, że najpierw trzeba wrzucić nasz obraz na repozytorium gita, np. darmowy github, gitlab itp., a następnie na http://docker.com w zakładce repositories, dodajemy adres do naszego repo, w którym mamy kod. Dzięki temu, obraz sam się aktualizuję, gdy pojawią się zmiany w projekcie.

docker

 

Użycie rozwiązań chmurowych

Amazon Web Services

Podobnie jak na ubuntu, tylko zaczynamy od stworzenia serwera opartego na nim. Jest jeszcze sposób, polecany na stronie
https://docs.docker.com/docker-for-aws/#logging dla chętnych i zaawansowanych wdrożeniowców. Możemy stworzyć EC2 lub Lightsail. To 1. można mieć za darmo (750h miesięcznie), to drugie – to koszt 5 dolarów miesięcznie. Więc w zależności od finansów.
Warto zainstalować ubuntu lub amazon linux na tych maszynach, w moim przykładzie, użyję amazon linux. Trzeba zalogować się przez SSH, aby obsługiwać maszynę:
[code]

Instalacja odbywa się przez komendę:

sudo yum install -y docker

sudo service docker start

Następnie dajemy uprawnienia dla konta ec2:

sudo usermod -a -G docker ec2-user
[/code]

Wylogowujemy się, a nawet najlepiej restartujemy instancję.

Google Cloud

Tutaj, więcej poradzicie sobie za pomocą terminala oraz oficjalnego narzędzia gcloud – szczegóły na oficjalnej stronie [Quickstart for Google Container Engine  |  Container Engine Documentation  |  Google Cloud Platform](https://cloud.google.com/container-engine/docs/quickstart)
Co ciekawe, można na rok za darmo mieć całkiem niezły pakiet, który użyłem m.in, aby dać wam poniższy przykład.

W moim przypadku:
Tworzymy Klaster za pomocą Terminala
[code]

gcloud container clusters create czyjebniecluster

I czekamy, i czekamy, aż utworzy nasz klaster.
Następnie, instalujemy narzędzia kubectl:

gcloud components install kubectl

Przy pomocy powyższego narzędzia możemy wykonywać kolejne komendy:

kubectl run czyjebnie –image=aluspl/czyjebnieimage:latest –port 8080

Następnie ustawiamy LoadBalancer na nasz serwis:

kubectl expose deployment czyjebnie –type=”LoadBalancer”

Aby dostać zewnętrzne IP do naszego serwisu:

kubectl get service czyjebnie
[/code]

W moim przypadku, jest to adres : 35.202.212.117:8080

Microsoft Azure

Chmura Azure, jedna z tych najbardziej intuicyjnych i łatwych do poruszania po panelu, wśród powyżej wymienionych, dlatego zostawiłem ją na koniec. Dodatkowo, logując się na visualstudio.net, można otrzymać całkiem sensowny roczny bonus. Jak dla mnie, same plusy (jeśli masz firmę, możesz ubiegać się jeszcze o bizsparka, gdzie miesięczne kredyty są sporo większe, niż 25$ na miesiąc (dla przykładu, WebServer 8 $ i baza MS SQL około 5$ ).
Na temat Dockera: [Quickstart – Create your first Azure Container Instances container with the Azure portal | Microsoft Docs](https://docs.microsoft.com/pl-pl/azure/container-instances/container-instances-quickstart-portal)
A ja opiszę to swoimi słowami i krokami, jak czyjebnie znalazło się na ażurowym wybrzeżu.
Wchodzimy w Portal, Dodajemy z Azure Marketplace i wybieramy Azure Container Instances (preview) . Tam wybieramy port, nazwę naszego obrazu i voila!

Docker

VLOG 5

Przy okazji, zapraszam na  kolejny odcinek VLOG po dłuższej przerwie 🙂
Recenzja Honor 8 Pro, Video z Hydropolis i inne 🙂

Podsumowanie

Jeśli Was nie zanudziłem, to w skrócie, macie powyżej komendy aktualne w dniu pisania tego wpisu. Polecam odnieść się do dokumentacji, po aktualne informacje. Teraz trzeba ruszyć z innymi pozycjami !
Przy okazji, dołączanie domen na Google Cloud i EC2 to katorga 🙂
Jeśli wpis się podobał, łapka w górę na FB.

  • Pingback: dotnetomaniak.pl()

  • klemensior

    Hej, jaką chmurę wybrałbyś dla web api .net core, bazy danych i przestrzeni na dane pod kontener? Ciekawy wpis, który zainteresował mnie nad poszukiwaniem innego rozwiązania niż dotychczasowe

    • Osobiscie : Docker – ma najlepsze poruszanie po interfejsie, bez uzywania linii komend 🙂 Główna strone lifelike.pl na nim trzymam