{"id":41873,"date":"2021-10-19T16:17:26","date_gmt":"2021-10-19T14:17:26","guid":{"rendered":"https:\/\/fotc.com\/?p=41873"},"modified":"2023-11-22T12:34:23","modified_gmt":"2023-11-22T11:34:23","slug":"google-cloud-run","status":"publish","type":"post","link":"https:\/\/fotc.com\/pl\/blog\/google-cloud-run\/","title":{"rendered":"Cloud Run \u2013 b\u0142yskawiczne wdra\u017canie aplikacji w chmurze Google"},"content":{"rendered":"\n<div class=\"wp-block-yoast-seo-table-of-contents yoast-table-of-contents collapsed\"><h2>Spis tre\u015bci<\/h2><ul><li><a href=\"#h-compute-serverless-moc-obliczeniowa-chmury-google\" data-level=\"2\">Compute &amp; Serverless: moc obliczeniowa chmury Google<\/a><\/li><li><a href=\"#h-co-to-jest-cloud-run\" data-level=\"2\">Co to jest Cloud Run?<\/a><ul><li><a href=\"#h-funkcjonalno-ci-cloud-run\" data-level=\"3\">Funkcjonalno\u015bci Cloud Run<\/a><\/li><\/ul><\/li><li><a href=\"#h-przyk-ady-u-ycia-cloud-run\" data-level=\"2\">Przyk\u0142ady u\u017cycia Cloud Run<\/a><ul><li><a href=\"#h-serwis-internetowy\" data-level=\"3\">Serwis internetowy<\/a><\/li><li><a href=\"#h-aplikacja-dla-dzia-w-back-office\" data-level=\"3\">Aplikacja dla dzia\u0142\u00f3w back-office<\/a><\/li><li><a href=\"#h-automatyczne-generowanie-dokument-w\" data-level=\"3\">Automatyczne generowanie dokument\u00f3w<\/a><\/li><\/ul><\/li><li><a href=\"#h-tutorial-uruchomienie-us-ugi-i-wdro-enie-kontenera\" data-level=\"2\">Tutorial \u2013 uruchomienie us\u0142ugi i wdro\u017cenie kontenera<\/a><ul><li><a href=\"#h-zanim-zaczniesz\" data-level=\"3\">Zanim zaczniesz<\/a><\/li><li><a href=\"#h-utworzenie-aplikacji-hello-world\" data-level=\"3\">Utworzenie aplikacji Hello World<\/a><\/li><li><a href=\"#h-spos-b-1-wdro-enie-aplikacji-w-cloud-run-z-lokalnego-rodowiska\" data-level=\"3\">Spos\u00f3b 1: Wdro\u017cenie aplikacji w Cloud Run z lokalnego \u015brodowiska<\/a><\/li><li><a href=\"#h-spos-b-2-wdro-enie-w-konsoli-z-rejestru-kontener-w\" data-level=\"3\">Spos\u00f3b 2: Wdro\u017cenie w konsoli z rejestru kontener\u00f3w<\/a><\/li><\/ul><\/li><li><a href=\"#h-ile-kosztuje-cloud-run-koszty-us-ugi\" data-level=\"2\">Ile kosztuje Cloud Run? Koszty us\u0142ugi<\/a><\/li><\/ul><\/div>\n\n\n\n<p>Chmura pozwala znacznie odci\u0105\u017cy\u0107 zespo\u0142y IT. Jej zarz\u0105dzane us\u0142ugi przejmuj\u0105 lwi\u0105 cz\u0119\u015b\u0107 prac utrzymaniowych, pozostawiaj\u0105c wi\u0119cej przestrzeni na rozw\u00f3j. Pozwalaj\u0105 szybciej wdra\u017ca\u0107 i modyfikowa\u0107 aplikacje, zapewniaj\u0105 wysok\u0105 dost\u0119pno\u015b\u0107 poprzez skalowanie w odpowiedzi na bie\u017c\u0105ce zapotrzebowanie oraz prowadz\u0105 do optymalizacji koszt\u00f3w dzi\u0119ki rozliczeniom w modelu pay-as-you-use. Szczeg\u00f3lnie popularnymi us\u0142ugami w\u015br\u00f3d przedsi\u0119biorstw, jak te\u017c indywidualnych specjalist\u00f3w, s\u0105 te z wachlarza Compute &amp; Serverless \u2013 us\u0142ugi maszyn wirtualnych i platform developerskich.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-compute-serverless-moc-obliczeniowa-chmury-google\">Compute &amp; Serverless: moc obliczeniowa chmury Google<\/h2>\n\n\n\n<p><a href=\"https:\/\/fotc.com\/pl\/google-cloud-platform\/\" target=\"_blank\" aria-label=\"Google Cloud Platform (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\">Google Cloud Platform<\/a> oferuje blisko 200 zarz\u0105dzanych us\u0142ug chmurowych, w tym maszyny wirtualne oraz platformy developerskie (grupa Compute &amp; <a href=\"https:\/\/fotc.com\/pl\/blog\/serverless-co-to-jest\/\" target=\"_blank\" aria-label=\"Serverless (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\">Serverless<\/a>). To us\u0142ugi, kt\u00f3re daj\u0105 dost\u0119p do niemal nieograniczonej mocy obliczeniowej Google oraz specyfikacji, kt\u00f3rej konfiguracja w modelu on-premise by\u0142aby bardzo kosztowna.<\/p>\n\n\n\n<p>Do us\u0142ug Compute &amp; Serverless nale\u017c\u0105 mi\u0119dzy innymi:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Compute Engine<\/strong> \u2013 us\u0142uga maszyn wirtualnych w modelu Infrastructure as a Service,<\/li><li><strong><a href=\"https:\/\/fotc.com\/pl\/blog\/app-engine\/\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\">App Engine<\/a> <\/strong>\u2013 platforma developerska s\u0142u\u017c\u0105ca do pisania i deployowania kodu, z zautomatyzowanymi procesami obs\u0142ugi infrastruktury,<\/li><li><strong><a href=\"https:\/\/fotc.com\/pl\/blog\/kubernetes-tutorial\/\" class=\"ek-link\">Google Kubernetes Engine<\/a><\/strong> \u2013 Kubernetes w chmurze, czyli platforma orkiestracji kontener\u00f3w i klastr\u00f3w,<\/li><li><strong>Cloud Run<\/strong> \u2013 bezserwerowa us\u0142uga dedykowana tworzeniu i rozwijaniu aplikacji w kontenerach,<\/li><li><strong>Cloud Functions<\/strong> \u2013 us\u0142uga w modelu Function as a Service, kt\u00f3ra daje mo\u017cliwo\u015b\u0107 zamieszczenia oraz wywo\u0142ania i wykonania kodu funkcji w odpowiedzi na okre\u015blony event.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\nhttps:\/\/youtu.be\/HlFICj_jdmM\n<\/div><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-co-to-jest-cloud-run\">Co to jest Cloud Run?<\/h2>\n\n\n\n<p><strong>Cloud Run to oparta na Knative zarz\u0105dzana platforma chmurowa, kt\u00f3ra umo\u017cliwia szybkie tworzenie i wdra\u017canie aplikacji w kontenerach<\/strong>. Jest bezserwerowa, co oznacza, \u017ce u\u017cytkownik nie musi dogl\u0105da\u0107 \u017cadnego elementu infrastruktury \u2013 konserwacji fizycznych maszyn, aktualizacji oprogramowania, r\u00f3wnowa\u017cenia obci\u0105\u017cenia czy skalowania. Skupia si\u0119 jedynie na pisaniu kodu w dowolnej, wybranej przez siebie technologii, z u\u017cyciem ulubionych bibliotek czy w\u0142asnych plik\u00f3w binarnych.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-funkcjonalno-ci-cloud-run\">Funkcjonalno\u015bci Cloud Run<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Dowolna technologia.<\/strong> Poniewa\u017c us\u0142uga operuje na kontenerach, umo\u017cliwia tworzenie kodu aplikacji z u\u017cyciem dowolnego j\u0119zyka programowania (m.in. Go, Python, Java, Ruby czy Node.js), bibliotek czy plik\u00f3w binarnych.<\/li><li><strong>Wykorzystanie mo\u017cliwo\u015bci kontener\u00f3w.<\/strong> Cloud Run pobiera dowolne obrazy kontener\u00f3w i dobrze integruje si\u0119 z takimi technologiami jak Cloud Build, Artifact Registry czy Docker.<\/li><li><strong>Integracja z innymi us\u0142ugami chmurowymi.<\/strong> Poniewa\u017c Cloud Run jest elementem Google Cloud Platform, relatywnie \u0142atwo jest stworzy\u0107 jedno zintegrowane \u015brodowisko wykorzystuj\u0105ce kilka czy nawet kilkana\u015bcie innych us\u0142ug GCP.<\/li><li><strong>Brak ograniczenia do jednej chmury.<\/strong> Us\u0142uga bazuje na otwarto\u017ar\u00f3d\u0142owej technologii Knative oraz na kontenerach, dzi\u0119ki czemu zasoby maj\u0105 zapewnion\u0105 przeno\u015bno\u015b\u0107, co uniemo\u017cliwia uzale\u017cnienie si\u0119 od jednego dostawcy chmurowego (cloud lock-in).<\/li><li><strong>W pe\u0142ni zarz\u0105dzana us\u0142uga. <\/strong>Raz skonfigurowana nie wymaga ponownych aktualizacji, by prawid\u0142owo zarz\u0105dza\u0107 \u015brodowiskiem aplikacji.<\/li><li><strong>Natychmiastowe automatyczne skalowanie.<\/strong> W sytuacjach zwi\u0119kszonego obci\u0105\u017cenia us\u0142uga skaluje si\u0119 w g\u00f3r\u0119, by zapewni\u0107 wysok\u0105 dost\u0119pno\u015b\u0107, a w momencie spadku ruchu zmniejsza liczb\u0119 funkcjnuj\u0105cych intancji, zapewniaj\u0105 tym samym koszty adekwatne do zu\u017cycia.<\/li><li><strong>Stabilno\u015b\u0107 dzi\u0119ki redundancji. <\/strong>Zasoby uruchomione w Cloud Run w modelu regional s\u0105 nieustannie przesy\u0142ane pomi\u0119dzy zonami, by zapewni\u0107 trwa\u0142o\u015b\u0107 danych nawet w obliczu awarii serwerowni Google Cloud.\u00a0<\/li><li><strong>Bezpiecze\u0144stwo.<\/strong> Us\u0142uga Binary Authorization pozwala wdra\u017ca\u0107 jedynie zaufane obrazy kontener\u00f3w. Zasoby s\u0105 uruchamiane w odizolowanych \u015brodowiskach, z okre\u015blonymi to\u017csamo\u015bciami i poziomami dost\u0119pu. Do zabezpieczenia mo\u017cesz u\u017cy\u0107 w\u0142asnego klucza szyfrowana, a danymi dost\u0119pu zarz\u0105dza\u0107 poprzez us\u0142ug\u0119 Secret Manager.<\/li><li><strong>Kontrola i monitoring.<\/strong> Us\u0142uga jest zintegrowana z narz\u0119dziami <a href=\"https:\/\/fotc.com\/pl\/blog\/cloud-monitoring\/\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\">Cloud Monitoring<\/a>, Cloud Logging, Cloud Trace i Error Reporting w celu zapewnienia dobrej kondycji aplikacji. Poziom u\u017cycia us\u0142ugi mo\u017cna monitorowa\u0107 w GUI Metrics, wraz z logami z kontener\u00f3w. Ponadto Cloud Run posiada wbudowan\u0105 funkcjonalno\u015b\u0107 umo\u017clwiaija\u0105c\u0105 szybkie przywr\u00f3cenie poprzedniej wersji kontenera (rollback).<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe title=\"Cloud Run in a minute\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/lzQNjZIGKaM?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-przyk-ady-u-ycia-cloud-run\">Przyk\u0142ady u\u017cycia Cloud Run<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-serwis-internetowy\">Serwis internetowy<\/h3>\n\n\n\n<p>Przy u\u017cyciu us\u0142ugi Cloud Run mo\u017cna utworzy\u0107 dynamicznie renderowane strony HTTP, anga\u017cuj\u0105c takie technologie jak nginx, ExpressJS czy django, a baz\u0119 danych posiada\u0107 w Cloud SQL.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"779\" height=\"508\" src=\"https:\/\/fotc.com\/app\/uploads\/2022\/01\/Serwis-internetowy-z-wykorzystaniem-Cloud-Run.png\" alt=\"Serwis internetowy z wykorzystaniem Cloud Run\" class=\"wp-image-58001\" srcset=\"https:\/\/fotc.com\/app\/uploads\/2022\/01\/Serwis-internetowy-z-wykorzystaniem-Cloud-Run.png 779w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/Serwis-internetowy-z-wykorzystaniem-Cloud-Run-300x196.png 300w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/Serwis-internetowy-z-wykorzystaniem-Cloud-Run-768x501.png 768w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/Serwis-internetowy-z-wykorzystaniem-Cloud-Run-123x80.png 123w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/Serwis-internetowy-z-wykorzystaniem-Cloud-Run-142x93.png 142w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/Serwis-internetowy-z-wykorzystaniem-Cloud-Run-268x175.png 268w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/Serwis-internetowy-z-wykorzystaniem-Cloud-Run-432x282.png 432w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/Serwis-internetowy-z-wykorzystaniem-Cloud-Run-281x183.png 281w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/Serwis-internetowy-z-wykorzystaniem-Cloud-Run-22x14.png 22w\" sizes=\"(max-width: 779px) 100vw, 779px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-aplikacja-dla-dzia-w-back-office\">Aplikacja dla dzia\u0142\u00f3w back-office<\/h3>\n\n\n\n<p>Dzia\u0142ania administracyjne w organizacjach cz\u0119sto obejmuj\u0105 prace na arkuszach kalkulacyjncych czy w programach zewn\u0119trznych dostawc\u00f3w. Z pomoc\u0105 Cloud Run mo\u017cna utworzy\u0107 aplikacj\u0119 wspieraj\u0105c\u0105 integracje mi\u0119dzy programami, usprawniaj\u0105c\u0105 zarz\u0105dzanie dost\u0119pami w\u015br\u00f3d u\u017cytkownik\u00f3w czy obieg dokumentacji w organizacji.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"744\" height=\"531\" src=\"https:\/\/fotc.com\/app\/uploads\/2022\/01\/Aplikacja-dla-dzialow-back-office-z-wykorzystaniem-Cloud-Run.png\" alt=\"Aplikacja dla dzia\u0142\u00f3w back office z wykorzystaniem Cloud Run\" class=\"wp-image-58008\" srcset=\"https:\/\/fotc.com\/app\/uploads\/2022\/01\/Aplikacja-dla-dzialow-back-office-z-wykorzystaniem-Cloud-Run.png 744w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/Aplikacja-dla-dzialow-back-office-z-wykorzystaniem-Cloud-Run-300x214.png 300w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/Aplikacja-dla-dzialow-back-office-z-wykorzystaniem-Cloud-Run-123x88.png 123w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/Aplikacja-dla-dzialow-back-office-z-wykorzystaniem-Cloud-Run-142x101.png 142w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/Aplikacja-dla-dzialow-back-office-z-wykorzystaniem-Cloud-Run-245x175.png 245w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/Aplikacja-dla-dzialow-back-office-z-wykorzystaniem-Cloud-Run-395x282.png 395w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/Aplikacja-dla-dzialow-back-office-z-wykorzystaniem-Cloud-Run-256x183.png 256w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/Aplikacja-dla-dzialow-back-office-z-wykorzystaniem-Cloud-Run-22x16.png 22w\" sizes=\"(max-width: 744px) 100vw, 744px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-automatyczne-generowanie-dokument-w\">Automatyczne generowanie dokument\u00f3w<\/h3>\n\n\n\n<p>Cloud Run w po\u0142\u0105czeniu z Cloud Schedulerem pozwala zbudowa\u0107 aplikacj\u0119 wykonuj\u0105c\u0105 automatycznie cykliczne akcje \u2013 na przyk\u0142ad generowanie co miesi\u0105c faktury. Poniewa\u017c do Cloud Run mo\u017cna wdro\u017cy\u0107 kontenery zawieraj\u0105ce dowolne (r\u00f3wnie\u017c w\u0142asne) pliki binarne, aplikacja mo\u017ce anga\u017cowa\u0107 narz\u0119dzia do tworzenia plik\u00f3w PDF, np. LibreOffice.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"631\" height=\"577\" src=\"https:\/\/fotc.com\/app\/uploads\/2022\/01\/Automatyczne-generowanie-dokumentow-z-wykorzystaniem-Cloud-Run.png\" alt=\"Automatyczne generowanie dokument\u00f3w z wykorzystaniem Cloud Run\" class=\"wp-image-58014\" srcset=\"https:\/\/fotc.com\/app\/uploads\/2022\/01\/Automatyczne-generowanie-dokumentow-z-wykorzystaniem-Cloud-Run.png 631w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/Automatyczne-generowanie-dokumentow-z-wykorzystaniem-Cloud-Run-300x274.png 300w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/Automatyczne-generowanie-dokumentow-z-wykorzystaniem-Cloud-Run-123x112.png 123w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/Automatyczne-generowanie-dokumentow-z-wykorzystaniem-Cloud-Run-142x130.png 142w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/Automatyczne-generowanie-dokumentow-z-wykorzystaniem-Cloud-Run-191x175.png 191w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/Automatyczne-generowanie-dokumentow-z-wykorzystaniem-Cloud-Run-308x282.png 308w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/Automatyczne-generowanie-dokumentow-z-wykorzystaniem-Cloud-Run-200x183.png 200w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/Automatyczne-generowanie-dokumentow-z-wykorzystaniem-Cloud-Run-22x20.png 22w\" sizes=\"(max-width: 631px) 100vw, 631px\" \/><\/figure>\n\n\n\n<p>Poniewa\u017c us\u0142uga jest rozliczana za u\u017cycie, w sytuacji gdy aplikacja nie jest u\u017cywana, nie ponosi si\u0119 \u017cadnych op\u0142at (o ile dolny limit skalowania wynosi 0). W przyk\u0142adzie wy\u017cej, op\u0142ata za Cloud Run b\u0119dzie naliczana tylko raz w miesi\u0105cu, w momencie generowania faktury.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-tutorial-uruchomienie-us-ugi-i-wdro-enie-kontenera\">Tutorial \u2013 uruchomienie us\u0142ugi i wdro\u017cenie kontenera<\/h2>\n\n\n\n<p>Poni\u017cszy tutorial wskazuje, w jaki spos\u00f3b utworzy\u0107 prost\u0105 aplikacj\u0119 Hello World, spakowa\u0107 j\u0105 do obrazu kontenera, a nast\u0119pnie wdro\u017cy\u0107 obraz w Cloud Run. Wspierane s\u0105 wszystkie j\u0119zyki programowania, kt\u00f3re mo\u017cna uruchomi\u0107 w kontenerze.<\/p>\n\n\n\n<p>Czyli w skr\u00f3cie: Aplikacja.py \u2192 Kontener \u2192 Cloud Run<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-zanim-zaczniesz\">Zanim zaczniesz<\/h3>\n\n\n\n<p>1. Zaloguj si\u0119 do konsoli Google Cloud Platform \u2013 <a href=\"https:\/\/console.cloud.google.com\/\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener nofollow\" class=\"ek-link\">console.cloud.google.com<\/a>.<\/p>\n\n\n\n<p>2. Upewnij si\u0119, \u017ce p\u0142atno\u015bci w Twoim projekcie s\u0105 w\u0142\u0105czone (zak\u0142adka Billing).<\/p>\n\n\n\n<p>3. Zainstaluj i zainicjuj <a href=\"https:\/\/cloud.google.com\/sdk\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener nofollow\" class=\"ek-link\">Cloud SDK<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-utworzenie-aplikacji-hello-world\">Utworzenie aplikacji Hello World<\/h3>\n\n\n\n<p>1. Utw\u00f3rz katalog i przejd\u017a do niego.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nmkdir helloworld\ncd helloworld\n<\/pre><\/div>\n\n\n<p>2. Stw\u00f3rz plik <strong>main.py<\/strong> i wklej do niego poni\u017csz\u0105 tre\u015b\u0107:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nimport os\n\nfrom flask import Flask\n\napp = Flask(__name__)\n\n\n@app.route(&quot;\/&quot;)\ndef hello_world():\n    name = os.environ.get(&quot;NAME&quot;, &quot;World&quot;)\n    return &quot;Hello {}!&quot;.format(name)\n\n\nif __name__ == &quot;__main__&quot;:\n    app.run(debug=True, host=&quot;0.0.0.0&quot;, port=int(os.environ.get(&quot;PORT&quot;, 8080)))\n<\/pre><\/div>\n\n\n<p>Powy\u017cszy kod uruchamia prosty serwer www Gunicorn z aplikacj\u0105, kt\u00f3ra zwraca tekst \u201eHello World\u201d po otrzymaniu zapytania HTTP. Port, na kt\u00f3rym nas\u0142uchuje aplikacja, jest zdefiniowany przez zmienn\u0105 \u015brodowiskow\u0105 lub jest to 8080.<\/p>\n\n\n\n<p>3. Nast\u0119pnie utw\u00f3rz plik <strong>requirements.txt<\/strong>, w kt\u00f3rym wpiszesz niezb\u0119dne zale\u017cno\u015bci (modu\u0142y) potrzebne do uruchomienia aplikacji. Poni\u017cej tre\u015b\u0107 pliku:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nFlask==2.0.1\ngunicorn==20.1.0\n<\/pre><\/div>\n\n\n<p>4. Dockerfile to plik definiuj\u0105cy kontener, mi\u0119dzy innymi to, co ma si\u0119 dzia\u0107 po jego uruchomieniu. W tym przypadku uruchamia webserwer Gunicorn, kt\u00f3ry nas\u0142uchuje na porcie zdefiniowanym przez zmienn\u0105 \u015brodowiskow\u0105 PORT.<\/p>\n\n\n\n<p>Jako obraz bazowy u\u017cywany jest oficjalny lekki obraz Python \u2013 <a href=\"https:\/\/hub.docker.com\/_\/python\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\">https:\/\/hub.docker.com\/_\/python<\/a><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nFROM python:3.9-slim\n<\/pre><\/div>\n\n\n<p>Poni\u017csza dyrektywa pozwala, by logi Python pojawia\u0142y si\u0119 od razu logach Knative:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nENV PYTHONUNBUFFERED True\n<\/pre><\/div>\n\n\n<p>Za pomoc\u0105 tej funkcji odbywa si\u0119 kopiowanie lokalnego kodu do obrazu kontenera:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nENV APP_HOME \/app\nWORKDIR $APP_HOME\nCOPY . .\/\n<\/pre><\/div>\n\n\n<p>Instalowanie zale\u017cno\u015bci produkcyjnych odbywa si\u0119 za pomoc\u0105:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nRUN pip install --no-cache-dir -r requirements.txt\n<\/pre><\/div>\n\n\n<p>Uruchomienie webserwera Gunicorn nast\u0119puje w trakcie uruchamiania kontenera.<\/p>\n\n\n\n<p>Dla \u015brodowisk uruchomieniowych z procesorem wielordzeniowym warto zwi\u0119kszy\u0107 liczb\u0119 worker\u00f3w (gunicorn) do warto\u015bci r\u00f3wniej liczbie rdzeni. Timeout worker\u00f3w jest ustawiony na 0, aby umo\u017cliwi\u0107 us\u0142udze Cloud Run skalowanie instancji:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nCMD exec gunicorn --bind :$PORT --workers 1 --threads 8 --timeout 0 main:app\n<\/pre><\/div>\n\n\n<p>5. Nast\u0119pnie dodaj plik <strong>.dockerignore<\/strong>, aby wykluczy\u0107 kopiowanie okre\u015blonych plik\u00f3w. Tre\u015b\u0107 pliku:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nDockerfile\nREADME.md\n*.pyc\n*.pyo\n*.pyd\n__pycache__\n.pytest_cache\n<\/pre><\/div>\n\n\n<h3 class=\"wp-block-heading\" id=\"h-spos-b-1-wdro-enie-aplikacji-w-cloud-run-z-lokalnego-rodowiska\">Spos\u00f3b 1: Wdro\u017cenie aplikacji w Cloud Run z lokalnego \u015brodowiska<\/h3>\n\n\n\n<p>\u017beby przeprowadzi\u0107 wdro\u017cenie w us\u0142udze Cloud Run, musisz posiada\u0107 odpowiednie uprawnienia na projekcie GCP \u2013 \u201eOwner\u201d lub \u201eEditor\u201d.<\/p>\n\n\n\n<p>1. W katalogu z aplikacj\u0105 wpisz poni\u017csz\u0105 komend\u0119:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\ngcloud run deploy\n<\/pre><\/div>\n\n\n<p>2. Je\u015bli pojawi si\u0119 monit o w\u0142\u0105czeniu API, nale\u017cy wpisa\u0107 <strong>y<\/strong>, aby je uruchomi\u0107.<\/p>\n\n\n\n<p>3. Gdy pojawi si\u0119 pytanie o lokalizacj\u0119 kodu \u017ar\u00f3d\u0142owego, wci\u015bnij <strong>klawisz Enter<\/strong>, aby wdro\u017cy\u0107 bie\u017c\u0105cy folder.<\/p>\n\n\n\n<p>4. Po wy\u015bwietleniu pytania o nazw\u0119 us\u0142ugi wci\u015bnij <strong>klawisz Enter<\/strong>, aby zaakceptowa\u0107 domy\u015bln\u0105 nazw\u0119 helloworld.<\/p>\n\n\n\n<p>5. Je\u015bli pojawi si\u0119 pytanie o w\u0142\u0105czenie interfejsu Artifact Registry API, wystarczy nacisn\u0105\u0107 <strong>y<\/strong>.<\/p>\n\n\n\n<p>6. Gdy zostaniesz poproszony o podanie regionu, wska\u017c nazw\u0119 lokalizacji (na przyk\u0142ad europe-central2). Tutaj znajduje si\u0119 <a href=\"https:\/\/cloud.google.com\/run\/docs\/locations\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener nofollow\" class=\"ek-link\">lista region\u00f3w Cloud Run<\/a>.<\/p>\n\n\n\n<p>7. Na pytanie o nieuwierzytelnione wywo\u0142ywanie odpowiedz <strong>y<\/strong>. Dzi\u0119ki temu ka\u017cdy znaj\u0105cy URL us\u0142ugi b\u0119dzie m\u00f3g\u0142 si\u0119 do niej dosta\u0107.<\/p>\n\n\n\n<p>8. Nast\u0119pnie nale\u017cy poczeka\u0107 chwil\u0119, a\u017c wdro\u017cenie zostanie zako\u0144czone. W przypadku powodzenia, wiersz polece\u0144 wy\u015bwietli adres URL us\u0142ugi.<\/p>\n\n\n\n<p>9. Sprawd\u017a, czy rzeczywi\u015bcie us\u0142uga dzia\u0142a, wklejaj\u0105c w przegl\u0105darce zwr\u00f3cony adres URL.<\/p>\n\n\n\n<p>10. Je\u015bli dotar\u0142e\u015b do tego miejsca, to gratulacje! W\u0142a\u015bnie wdro\u017cy\u0142e\u015b obraz kontenera z kodu \u017ar\u00f3d\u0142owego w Cloud Run. Cloud Run automatycznie skaluje us\u0142ug\u0119 w g\u00f3r\u0119 w razie wzrostu zapotrzebowania, czyli dodaje kolejne instancje. Kiedy obci\u0105\u017cenie spadnie, to r\u00f3wnie\u017c liczba instancji si\u0119 redukuje, dzi\u0119ki czemu nie b\u0119dziesz przep\u0142aca\u0107 za us\u0142ug\u0119.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-spos-b-2-wdro-enie-w-konsoli-z-rejestru-kontener-w\">Spos\u00f3b 2: Wdro\u017cenie w konsoli z rejestru kontener\u00f3w<\/h3>\n\n\n\n<p>W Cloud Run aplikacje mo\u017cna te\u017c wdro\u017cy\u0107 inaczej, z poziomu graficznego UI konsoli. Jako \u017ar\u00f3d\u0142o kodu mo\u017cna wskaza\u0107 obraz, wcze\u015bniej przygotowany i przes\u0142any do repozytorium (Cloud Artifacts Registry lub Cloud Container Registry) albo wybra\u0107 repozytorium kodu \u017ar\u00f3d\u0142owego. Poni\u017cej znajduje si\u0119 kr\u00f3tka instrukcja, jak przeprowadzi\u0107 wdro\u017cenie z u\u017cyciem repozytorium obraz\u00f3w:<\/p>\n\n\n\n<p>1. Przejd\u017a do folderu z aplikacj\u0105 Hello World, kt\u00f3r\u0105 wcze\u015bniej przygotowa\u0142e\u015b.<\/p>\n\n\n\n<p>2. Zbuduj obraz, podaj\u0105c komend\u0119 <strong>docker build<\/strong>.<\/p>\n\n\n\n<p>Po prawid\u0142owej budowie obrazu powinien pokaza\u0107 si\u0119 komunikat:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nSuccessfully built &#x5B;ID obrazu]\n<\/pre><\/div>\n\n\n<p>W przypadku projektu z tutoriala jest to:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nSuccessfully built ad890e53825e\n<\/pre><\/div>\n\n\n<p>3. Warto sprawdzi\u0107, czy obraz uruchamia si\u0119 prawid\u0142owo lokalnie. W tym celu wywo\u0142aj komend\u0119:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\ndocker run -p 8080 -e PORT=8080 &#x5B;ID obrazu]\n<\/pre><\/div>\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"101\" src=\"https:\/\/fotc.com\/app\/uploads\/2022\/01\/wywolanie-komendy-w-cloudshell-1024x101.png\" alt=\"wywo\u0142anie komendy w cloudshell\" class=\"wp-image-58020\" srcset=\"https:\/\/fotc.com\/app\/uploads\/2022\/01\/wywolanie-komendy-w-cloudshell-1024x101.png 1024w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/wywolanie-komendy-w-cloudshell-300x30.png 300w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/wywolanie-komendy-w-cloudshell-768x76.png 768w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/wywolanie-komendy-w-cloudshell-123x12.png 123w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/wywolanie-komendy-w-cloudshell-142x14.png 142w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/wywolanie-komendy-w-cloudshell-352x35.png 352w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/wywolanie-komendy-w-cloudshell-542x54.png 542w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/wywolanie-komendy-w-cloudshell-22x2.png 22w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/wywolanie-komendy-w-cloudshell.png 1276w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Po przej\u015bciu do przegl\u0105darki, na adres localhost po zdefiniowanym wcze\u015bniej porcie (w tym przypadku 127.0.0.1:8080), powiniene\u015b zobaczy\u0107 efekt wdro\u017cenia:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"115\" height=\"68\" src=\"https:\/\/fotc.com\/app\/uploads\/2022\/01\/efekt-wdrozenia-z-poziomu-konsoli.png\" alt=\"efekt wdro\u017cenia z poziomu konsoli\" class=\"wp-image-58026\" srcset=\"https:\/\/fotc.com\/app\/uploads\/2022\/01\/efekt-wdrozenia-z-poziomu-konsoli.png 115w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/efekt-wdrozenia-z-poziomu-konsoli-22x13.png 22w\" sizes=\"(max-width: 115px) 100vw, 115px\" \/><\/figure>\n\n\n\n<p>4. Kolejnym krokiem jest otagowanie obrazu tak, aby mo\u017cna go by\u0142o wys\u0142a\u0107 do container registry:&nbsp;<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\ndocker tag SOURCE_IMAGE HOSTNAME\/PROJECT-ID\/IMAGE\n<\/pre><\/div>\n\n\n<p>W przypadku opisanym w tutorialu komenda wygl\u0105da nast\u0119puj\u0105co:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\ndocker tag ad890e53825e eu.gcr.io\/preemptible-vm-instances\/helloworld-2\n<\/pre><\/div>\n\n\n<p>5. Nast\u0119pnie nale\u017cy wys\u0142a\u0107 obraz do rejestru kontener\u00f3w:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\ndocker push eu.gcr.io\/preemptible-vm-instances\/helloworld-2\n<\/pre><\/div>\n\n\n<p>Je\u015bli akcja zako\u0144czy\u0142a si\u0119 powodzeniem, w terminalu powiniene\u015b zobaczy\u0107 taki widok:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"259\" src=\"https:\/\/fotc.com\/app\/uploads\/2022\/01\/efekt-wywolania-komendy-docker-push-1024x259.png\" alt=\"efekt wywo\u0142ania komendy docker push\" class=\"wp-image-58032\" srcset=\"https:\/\/fotc.com\/app\/uploads\/2022\/01\/efekt-wywolania-komendy-docker-push-1024x259.png 1024w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/efekt-wywolania-komendy-docker-push-300x76.png 300w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/efekt-wywolania-komendy-docker-push-768x194.png 768w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/efekt-wywolania-komendy-docker-push-123x31.png 123w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/efekt-wywolania-komendy-docker-push-142x36.png 142w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/efekt-wywolania-komendy-docker-push-352x89.png 352w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/efekt-wywolania-komendy-docker-push-542x137.png 542w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/efekt-wywolania-komendy-docker-push-22x6.png 22w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/efekt-wywolania-komendy-docker-push.png 1202w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Aby sprawdzi\u0107, czy obraz rzeczywi\u015bcie znajduje si\u0119 w repozytorium, wystarczy wpisa\u0107:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\ngcloud container images list-tags eu.gcr.io\/preemptible-vm-instances\/helloworld-2\n<\/pre><\/div>\n\n\n<p>Komend\u0119 nale\u017cy zmodyfikowa\u0107 o region, w kt\u00f3rym jest uruchomiona us\u0142uga, nazw\u0119 projektu oraz nazw\u0119 obrazu.<\/p>\n\n\n\n<p>Terminal powinien zwr\u00f3ci\u0107 warto\u015bci:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nDIGEST: 44682cb07278\nTAGS: latest\n<\/pre><\/div>\n\n\n<p>6. Je\u015bli ju\u017c masz obraz w rejestrze, nie pozostaje nic innego, jak przej\u015b\u0107 do konsoli graficznej i wdro\u017cy\u0107 kontener.<\/p>\n\n\n\n<p>Po przej\u015bciu do konsoli, do zak\u0142adki Cloud Run, kliknij <strong>Create Service<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" width=\"1003\" height=\"723\" src=\"https:\/\/fotc.com\/app\/uploads\/2021\/10\/cr.png\" alt=\"wdro\u017cenie kontenera gcp\" class=\"wp-image-42307\" srcset=\"https:\/\/fotc.com\/app\/uploads\/2021\/10\/cr.png 1003w, https:\/\/fotc.com\/app\/uploads\/2021\/10\/cr-300x216.png 300w, https:\/\/fotc.com\/app\/uploads\/2021\/10\/cr-768x554.png 768w, https:\/\/fotc.com\/app\/uploads\/2021\/10\/cr-123x89.png 123w, https:\/\/fotc.com\/app\/uploads\/2021\/10\/cr-142x102.png 142w, https:\/\/fotc.com\/app\/uploads\/2021\/10\/cr-243x175.png 243w, https:\/\/fotc.com\/app\/uploads\/2021\/10\/cr-391x282.png 391w, https:\/\/fotc.com\/app\/uploads\/2021\/10\/cr-667x481.png 667w, https:\/\/fotc.com\/app\/uploads\/2021\/10\/cr-254x183.png 254w, https:\/\/fotc.com\/app\/uploads\/2021\/10\/cr-22x16.png 22w\" sizes=\"(max-width: 1003px) 100vw, 1003px\" \/><\/figure>\n\n\n\n<p>7. W panelu konfiguracyjnym kliknij <strong>Select<\/strong>&#8230;<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"588\" height=\"296\" src=\"https:\/\/fotc.com\/app\/uploads\/2022\/01\/zalaczanie-obrazu-kontenera.png\" alt=\"za\u0142\u0105czanie obrazu kontenera\" class=\"wp-image-58038\" srcset=\"https:\/\/fotc.com\/app\/uploads\/2022\/01\/zalaczanie-obrazu-kontenera.png 588w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/zalaczanie-obrazu-kontenera-300x151.png 300w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/zalaczanie-obrazu-kontenera-123x62.png 123w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/zalaczanie-obrazu-kontenera-142x71.png 142w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/zalaczanie-obrazu-kontenera-348x175.png 348w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/zalaczanie-obrazu-kontenera-542x273.png 542w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/zalaczanie-obrazu-kontenera-352x177.png 352w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/zalaczanie-obrazu-kontenera-22x11.png 22w\" sizes=\"(max-width: 588px) 100vw, 588px\" \/><\/figure>\n\n\n\n<p>&#8230;i wybierz obraz kontenera.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"557\" height=\"375\" src=\"https:\/\/fotc.com\/app\/uploads\/2022\/01\/Wybieranie-obrazu-kontenera-z-container-registry.png\" alt=\"Wybieranie obrazu kontenera z container registry\" class=\"wp-image-58044\" srcset=\"https:\/\/fotc.com\/app\/uploads\/2022\/01\/Wybieranie-obrazu-kontenera-z-container-registry.png 557w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/Wybieranie-obrazu-kontenera-z-container-registry-300x202.png 300w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/Wybieranie-obrazu-kontenera-z-container-registry-123x83.png 123w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/Wybieranie-obrazu-kontenera-z-container-registry-142x96.png 142w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/Wybieranie-obrazu-kontenera-z-container-registry-260x175.png 260w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/Wybieranie-obrazu-kontenera-z-container-registry-419x282.png 419w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/Wybieranie-obrazu-kontenera-z-container-registry-272x183.png 272w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/Wybieranie-obrazu-kontenera-z-container-registry-22x15.png 22w\" sizes=\"(max-width: 557px) 100vw, 557px\" \/><\/figure>\n\n\n\n<p>8. Nast\u0119pnie wska\u017c region, w kt\u00f3rym maj\u0105 by\u0107 wdro\u017cone us\u0142ugi:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"555\" height=\"369\" src=\"https:\/\/fotc.com\/app\/uploads\/2022\/01\/Wybranie-preferowanego-regionu.png\" alt=\"Wybranie preferowanego regionu\" class=\"wp-image-58050\" srcset=\"https:\/\/fotc.com\/app\/uploads\/2022\/01\/Wybranie-preferowanego-regionu.png 555w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/Wybranie-preferowanego-regionu-300x199.png 300w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/Wybranie-preferowanego-regionu-123x82.png 123w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/Wybranie-preferowanego-regionu-142x94.png 142w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/Wybranie-preferowanego-regionu-263x175.png 263w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/Wybranie-preferowanego-regionu-424x282.png 424w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/Wybranie-preferowanego-regionu-275x183.png 275w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/Wybranie-preferowanego-regionu-22x15.png 22w\" sizes=\"(max-width: 555px) 100vw, 555px\" \/><\/figure>\n\n\n\n<p>9. Kolejnym krokiem jest wyb\u00f3r procesora. Wska\u017c, czy procesor ma by\u0107 alokowany tylko podczas zapytania, czy zawsze. Je\u015bli chcesz p\u0142aci\u0107 tylko za rzeczywiste zu\u017cycie, lepsza b\u0119dzie pierwsza opcja.<\/p>\n\n\n\n<p>Zdefiniuj te\u017c warto\u015bci automatycznego skalowania \u2013 minimaln\u0105 i maksymaln\u0105 liczb\u0119 instancji. Je\u015bli ustawisz minimalny limit 1 (lub wy\u017cszy), b\u0119dziesz p\u0142aci\u0107 za us\u0142ug\u0119, nawet gdy nie b\u0119dzie u\u017cywana, ale us\u0142uga b\u0119dzie uruchamia\u0107 si\u0119 szybciej dzi\u0119ki pomini\u0119ciu Cold Start. Je\u015bli nie chcesz p\u0142aci\u0107 za nieu\u017cywan\u0105 us\u0142ug\u0119, ustaw dolny limit 0. Zwr\u00f3\u0107 szczeg\u00f3ln\u0105 us\u0142ug\u0119 na g\u00f3rny limit skalowania \u2013 bezpiecznie jest ustawi\u0107 niewysok\u0105 liczb\u0119 instancji (tutaj mo\u017cesz przeczyta\u0107 o <a href=\"https:\/\/niebezpiecznik.pl\/post\/ile-kosztuje-niewiedza-w-chmurze-analiza-5-niepotrzebnie-wysokich-rachunkow\/\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\">niepotrzebnie wysokim rachunku za us\u0142ug\u0119 w wyniku zbyt wysokiego g\u00f3rnego limitu skalowania<\/a>).<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"533\" height=\"281\" src=\"https:\/\/fotc.com\/app\/uploads\/2022\/01\/alokacja-zasobow-i-ustalanie-limitow-autoskalowania.png\" alt=\"alokacja zasob\u00f3w i ustalanie limit\u00f3w autoskalowania\" class=\"wp-image-58056\" srcset=\"https:\/\/fotc.com\/app\/uploads\/2022\/01\/alokacja-zasobow-i-ustalanie-limitow-autoskalowania.png 533w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/alokacja-zasobow-i-ustalanie-limitow-autoskalowania-300x158.png 300w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/alokacja-zasobow-i-ustalanie-limitow-autoskalowania-123x65.png 123w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/alokacja-zasobow-i-ustalanie-limitow-autoskalowania-142x75.png 142w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/alokacja-zasobow-i-ustalanie-limitow-autoskalowania-332x175.png 332w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/alokacja-zasobow-i-ustalanie-limitow-autoskalowania-347x183.png 347w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/alokacja-zasobow-i-ustalanie-limitow-autoskalowania-22x12.png 22w\" sizes=\"(max-width: 533px) 100vw, 533px\" \/><\/figure>\n\n\n\n<p>10. Zdefiniuj, czy ruch do us\u0142ugi ma by\u0107 uwierzytelniany oraz czy dopuszczony jest ruch wewn\u0119trzny (sie\u0107 VPS) czy ruch publiczny.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"827\" height=\"499\" src=\"https:\/\/fotc.com\/app\/uploads\/2022\/01\/konfiguracja-walidacji-ruchu.png\" alt=\"konfiguracja walidacji ruchu\" class=\"wp-image-58062\" srcset=\"https:\/\/fotc.com\/app\/uploads\/2022\/01\/konfiguracja-walidacji-ruchu.png 827w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/konfiguracja-walidacji-ruchu-300x181.png 300w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/konfiguracja-walidacji-ruchu-768x463.png 768w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/konfiguracja-walidacji-ruchu-123x74.png 123w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/konfiguracja-walidacji-ruchu-142x86.png 142w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/konfiguracja-walidacji-ruchu-290x175.png 290w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/konfiguracja-walidacji-ruchu-467x282.png 467w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/konfiguracja-walidacji-ruchu-303x183.png 303w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/konfiguracja-walidacji-ruchu-22x13.png 22w\" sizes=\"(max-width: 827px) 100vw, 827px\" \/><\/figure>\n\n\n\n<p>11. Kliknij <strong>Create <\/strong>i zaczekaj, a\u017c us\u0142uga si\u0119 uruchomi.<\/p>\n\n\n\n<p>12. Je\u015bli zobaczysz podobny widok, jak na poni\u017cszym zrzucie ekranu, to oznacza, \u017ce us\u0142uga jest aktywna.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"511\" src=\"https:\/\/fotc.com\/app\/uploads\/2022\/01\/widok-aktywnej-uslugi-w-ramach-cloud-run-1024x511.png\" alt=\"widok aktywnej us\u0142ugi w ramach cloud run\" class=\"wp-image-58068\" srcset=\"https:\/\/fotc.com\/app\/uploads\/2022\/01\/widok-aktywnej-uslugi-w-ramach-cloud-run-1024x511.png 1024w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/widok-aktywnej-uslugi-w-ramach-cloud-run-300x150.png 300w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/widok-aktywnej-uslugi-w-ramach-cloud-run-768x384.png 768w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/widok-aktywnej-uslugi-w-ramach-cloud-run-1536x767.png 1536w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/widok-aktywnej-uslugi-w-ramach-cloud-run-123x61.png 123w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/widok-aktywnej-uslugi-w-ramach-cloud-run-142x71.png 142w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/widok-aktywnej-uslugi-w-ramach-cloud-run-350x175.png 350w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/widok-aktywnej-uslugi-w-ramach-cloud-run-542x271.png 542w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/widok-aktywnej-uslugi-w-ramach-cloud-run-352x176.png 352w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/widok-aktywnej-uslugi-w-ramach-cloud-run-22x11.png 22w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/widok-aktywnej-uslugi-w-ramach-cloud-run.png 1600w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Mo\u017cesz sprawdzi\u0107 jej dzia\u0142anie, wchodz\u0105c na wygenerowany URL. <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"436\" height=\"109\" src=\"https:\/\/fotc.com\/app\/uploads\/2022\/01\/hello-world-w-cloud-run.png\" alt=\"hello world w cloud run\" class=\"wp-image-58074\" srcset=\"https:\/\/fotc.com\/app\/uploads\/2022\/01\/hello-world-w-cloud-run.png 436w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/hello-world-w-cloud-run-300x75.png 300w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/hello-world-w-cloud-run-123x31.png 123w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/hello-world-w-cloud-run-142x36.png 142w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/hello-world-w-cloud-run-352x88.png 352w, https:\/\/fotc.com\/app\/uploads\/2022\/01\/hello-world-w-cloud-run-22x6.png 22w\" sizes=\"(max-width: 436px) 100vw, 436px\" \/><\/figure>\n\n\n\n<p>13. Wdro\u017cenie aplikacji na Google Cloud Run zako\u0144czy\u0142o si\u0119 powodzeniem. W nast\u0119pnym kroku mo\u017cesz skonfigurowa\u0107 Continous Deployment do Cloud Run, by zautomatyzowa\u0107 wdro\u017cenia. Mo\u017cesz te\u017c zarz\u0105dza\u0107 ruchem mi\u0119dzy wersjami, by prowadzi\u0107 testy A\/B aplikacji. Opr\u00f3cz obs\u0142ugi zapyta\u0144 HTTPS, mo\u017cna zdefiniowa\u0107 zdarzenia, kt\u00f3re b\u0119d\u0105 wyzwala\u0107 obraz \u2013 obecnie dost\u0119pnych jest ponad 90 event\u00f3w spo\u015br\u00f3d r\u00f3\u017cnych us\u0142ug GCP.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-ile-kosztuje-cloud-run-koszty-us-ugi\">Ile kosztuje Cloud Run? Koszty us\u0142ugi<\/h2>\n\n\n\n<p>Us\u0142uga jest rozliczana w modelu pay-as-you-use w uj\u0119ciu sekundowym. W kosztach uwzgl\u0119dnione s\u0105 CPU, pami\u0119\u0107, liczba zapyta\u0144 oraz u\u017cycie sieci. Us\u0142uga ma bezp\u0142atny odnawialny miesi\u0119czny limit Free Tier.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><\/td><td><strong>CPU<\/strong><\/td><td><strong>Pami\u0119\u0107<\/strong><\/td><td><strong>Zapytania<\/strong><\/td><\/tr><tr><td><strong>Koszt<\/strong><\/td><td> 0,00002400 USD za sekund\u0119 vCPU <\/td><td> 0,00000250 USD za GB na sekund\u0119 <\/td><td> 0,40 USD za milion request\u00f3w <\/td><\/tr><tr><td><strong>Free Tier (limity miesi\u0119czne)<\/strong><\/td><td> 180 000 sekund vCPU <\/td><td> 360 000 GB na sekund\u0119 <\/td><td>2 miliony request\u00f3w<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>By otrzyma\u0107 dok\u0142adn\u0105 estymacj\u0119, mo\u017cesz skorzysta\u0107 z <a href=\"https:\/\/cloud.google.com\/products\/calculator\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener nofollow\" class=\"ek-link\">kalkulatora Google Cloud Platform<\/a>.&nbsp;<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Chmura pozwala znacznie odci\u0105\u017cy\u0107 zespo\u0142y IT. Jej zarz\u0105dzane us\u0142ugi przejmuj\u0105 lwi\u0105 cz\u0119\u015b\u0107 prac utrzymaniowych, pozostawiaj\u0105c wi\u0119cej przestrzeni na rozw\u00f3j. Pozwalaj\u0105 szybciej wdra\u017ca\u0107 i modyfikowa\u0107 aplikacje, zapewniaj\u0105 wysok\u0105 dost\u0119pno\u015b\u0107 poprzez skalowanie w odpowiedzi na bie\u017c\u0105ce zapotrzebowanie oraz prowadz\u0105 do optymalizacji koszt\u00f3w dzi\u0119ki rozliczeniom w modelu pay-as-you-use. Szczeg\u00f3lnie popularnymi us\u0142ugami w\u015br\u00f3d przedsi\u0119biorstw, jak te\u017c indywidualnych specjalist\u00f3w, s\u0105&#8230;<\/p>\n","protected":false},"author":13,"featured_media":41891,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_editorskit_title_hidden":false,"_editorskit_reading_time":8,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","footnotes":""},"categories":[560],"tags":[750,139],"class_list":["post-41873","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-google-cloud-platform-pl","tag-cloud-run","tag-tutorial"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Cloud Run \u2013 szybkie wdra\u017canie aplikacji w chmurze Google<\/title>\n<meta name=\"description\" content=\"Dowiedz si\u0119, jak mo\u017cesz zaoszcz\u0119dzi\u0107 czas i pieni\u0105dze z Cloud Run - bezserwerow\u0105 platform\u0105 dla aplikacji w kontenerach.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fotc.com\/pl\/blog\/google-cloud-run\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Cloud Run \u2013 b\u0142yskawiczne wdra\u017canie aplikacji w chmurze Google\" \/>\n<meta property=\"og:description\" content=\"Dowiedz si\u0119, jak mo\u017cesz zaoszcz\u0119dzi\u0107 czas i pieni\u0105dze z Cloud Run - bezserwerow\u0105 platform\u0105 dla aplikacji w kontenerach.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fotc.com\/pl\/blog\/google-cloud-run\/\" \/>\n<meta property=\"og:site_name\" content=\"FOTC\" \/>\n<meta property=\"article:published_time\" content=\"2021-10-19T14:17:26+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-11-22T11:34:23+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/fotc.com\/app\/uploads\/2021\/10\/BLOG_GCP_Cloud-Run-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Ida O\u017carowska\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fotc.com\/pl\/blog\/google-cloud-run\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fotc.com\/pl\/blog\/google-cloud-run\/\"},\"author\":{\"name\":\"Ida O\u017carowska\",\"@id\":\"https:\/\/fotc.com\/pl\/#\/schema\/person\/2863e62831e52977dbc3760888211ac0\"},\"headline\":\"Cloud Run \u2013 b\u0142yskawiczne wdra\u017canie aplikacji w chmurze Google\",\"datePublished\":\"2021-10-19T14:17:26+00:00\",\"dateModified\":\"2023-11-22T11:34:23+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fotc.com\/pl\/blog\/google-cloud-run\/\"},\"wordCount\":2160,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/fotc.com\/pl\/blog\/google-cloud-run\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/fotc.com\/app\/uploads\/2021\/10\/BLOG_GCP_Cloud-Run-1.png\",\"keywords\":[\"Cloud Run\",\"tutorial\"],\"articleSection\":[\"Google Cloud\"],\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fotc.com\/pl\/blog\/google-cloud-run\/#respond\"]}],\"accessibilityFeature\":[\"tableOfContents\"]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fotc.com\/pl\/blog\/google-cloud-run\/\",\"url\":\"https:\/\/fotc.com\/pl\/blog\/google-cloud-run\/\",\"name\":\"Cloud Run \u2013 szybkie wdra\u017canie aplikacji w chmurze Google\",\"isPartOf\":{\"@id\":\"https:\/\/fotc.com\/pl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/fotc.com\/pl\/blog\/google-cloud-run\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/fotc.com\/pl\/blog\/google-cloud-run\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/fotc.com\/app\/uploads\/2021\/10\/BLOG_GCP_Cloud-Run-1.png\",\"datePublished\":\"2021-10-19T14:17:26+00:00\",\"dateModified\":\"2023-11-22T11:34:23+00:00\",\"author\":{\"@id\":\"https:\/\/fotc.com\/pl\/#\/schema\/person\/2863e62831e52977dbc3760888211ac0\"},\"description\":\"Dowiedz si\u0119, jak mo\u017cesz zaoszcz\u0119dzi\u0107 czas i pieni\u0105dze z Cloud Run - bezserwerow\u0105 platform\u0105 dla aplikacji w kontenerach.\",\"breadcrumb\":{\"@id\":\"https:\/\/fotc.com\/pl\/blog\/google-cloud-run\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fotc.com\/pl\/blog\/google-cloud-run\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/fotc.com\/pl\/blog\/google-cloud-run\/#primaryimage\",\"url\":\"https:\/\/fotc.com\/app\/uploads\/2021\/10\/BLOG_GCP_Cloud-Run-1.png\",\"contentUrl\":\"https:\/\/fotc.com\/app\/uploads\/2021\/10\/BLOG_GCP_Cloud-Run-1.png\",\"width\":1200,\"height\":628},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fotc.com\/pl\/blog\/google-cloud-run\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/fotc.com\/pl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Google Cloud\",\"item\":\"https:\/\/fotc.com\/pl\/blog\/category\/google-cloud-platform-pl\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Cloud Run \u2013 b\u0142yskawiczne wdra\u017canie aplikacji w chmurze Google\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fotc.com\/pl\/#website\",\"url\":\"https:\/\/fotc.com\/pl\/\",\"name\":\"FOTC\",\"description\":\"Partner Google Cloud\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fotc.com\/pl\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pl-PL\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/fotc.com\/pl\/#\/schema\/person\/2863e62831e52977dbc3760888211ac0\",\"name\":\"Ida O\u017carowska\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/18c4dcdfa1f953ebadf3f4b021f85b8ac02054980afb387081a042e567c4673a?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/18c4dcdfa1f953ebadf3f4b021f85b8ac02054980afb387081a042e567c4673a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/18c4dcdfa1f953ebadf3f4b021f85b8ac02054980afb387081a042e567c4673a?s=96&d=mm&r=g\",\"caption\":\"Ida O\u017carowska\"},\"description\":\"Ida has a Master's Degree in Communication Management from the University of Wroc\u0142aw. For over 7 years, she has been creating content that connects the worlds of technology and business. At FOTC, she is a Content Manager.\",\"url\":\"https:\/\/fotc.com\/pl\/blog\/author\/ida-ozarowska\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Cloud Run \u2013 szybkie wdra\u017canie aplikacji w chmurze Google","description":"Dowiedz si\u0119, jak mo\u017cesz zaoszcz\u0119dzi\u0107 czas i pieni\u0105dze z Cloud Run - bezserwerow\u0105 platform\u0105 dla aplikacji w kontenerach.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fotc.com\/pl\/blog\/google-cloud-run\/","og_locale":"pl_PL","og_type":"article","og_title":"Cloud Run \u2013 b\u0142yskawiczne wdra\u017canie aplikacji w chmurze Google","og_description":"Dowiedz si\u0119, jak mo\u017cesz zaoszcz\u0119dzi\u0107 czas i pieni\u0105dze z Cloud Run - bezserwerow\u0105 platform\u0105 dla aplikacji w kontenerach.","og_url":"https:\/\/fotc.com\/pl\/blog\/google-cloud-run\/","og_site_name":"FOTC","article_published_time":"2021-10-19T14:17:26+00:00","article_modified_time":"2023-11-22T11:34:23+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/fotc.com\/app\/uploads\/2021\/10\/BLOG_GCP_Cloud-Run-1.png","type":"image\/png"}],"author":"Ida O\u017carowska","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fotc.com\/pl\/blog\/google-cloud-run\/#article","isPartOf":{"@id":"https:\/\/fotc.com\/pl\/blog\/google-cloud-run\/"},"author":{"name":"Ida O\u017carowska","@id":"https:\/\/fotc.com\/pl\/#\/schema\/person\/2863e62831e52977dbc3760888211ac0"},"headline":"Cloud Run \u2013 b\u0142yskawiczne wdra\u017canie aplikacji w chmurze Google","datePublished":"2021-10-19T14:17:26+00:00","dateModified":"2023-11-22T11:34:23+00:00","mainEntityOfPage":{"@id":"https:\/\/fotc.com\/pl\/blog\/google-cloud-run\/"},"wordCount":2160,"commentCount":0,"image":{"@id":"https:\/\/fotc.com\/pl\/blog\/google-cloud-run\/#primaryimage"},"thumbnailUrl":"https:\/\/fotc.com\/app\/uploads\/2021\/10\/BLOG_GCP_Cloud-Run-1.png","keywords":["Cloud Run","tutorial"],"articleSection":["Google Cloud"],"inLanguage":"pl-PL","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fotc.com\/pl\/blog\/google-cloud-run\/#respond"]}],"accessibilityFeature":["tableOfContents"]},{"@type":"WebPage","@id":"https:\/\/fotc.com\/pl\/blog\/google-cloud-run\/","url":"https:\/\/fotc.com\/pl\/blog\/google-cloud-run\/","name":"Cloud Run \u2013 szybkie wdra\u017canie aplikacji w chmurze Google","isPartOf":{"@id":"https:\/\/fotc.com\/pl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/fotc.com\/pl\/blog\/google-cloud-run\/#primaryimage"},"image":{"@id":"https:\/\/fotc.com\/pl\/blog\/google-cloud-run\/#primaryimage"},"thumbnailUrl":"https:\/\/fotc.com\/app\/uploads\/2021\/10\/BLOG_GCP_Cloud-Run-1.png","datePublished":"2021-10-19T14:17:26+00:00","dateModified":"2023-11-22T11:34:23+00:00","author":{"@id":"https:\/\/fotc.com\/pl\/#\/schema\/person\/2863e62831e52977dbc3760888211ac0"},"description":"Dowiedz si\u0119, jak mo\u017cesz zaoszcz\u0119dzi\u0107 czas i pieni\u0105dze z Cloud Run - bezserwerow\u0105 platform\u0105 dla aplikacji w kontenerach.","breadcrumb":{"@id":"https:\/\/fotc.com\/pl\/blog\/google-cloud-run\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fotc.com\/pl\/blog\/google-cloud-run\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/fotc.com\/pl\/blog\/google-cloud-run\/#primaryimage","url":"https:\/\/fotc.com\/app\/uploads\/2021\/10\/BLOG_GCP_Cloud-Run-1.png","contentUrl":"https:\/\/fotc.com\/app\/uploads\/2021\/10\/BLOG_GCP_Cloud-Run-1.png","width":1200,"height":628},{"@type":"BreadcrumbList","@id":"https:\/\/fotc.com\/pl\/blog\/google-cloud-run\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/fotc.com\/pl\/"},{"@type":"ListItem","position":2,"name":"Google Cloud","item":"https:\/\/fotc.com\/pl\/blog\/category\/google-cloud-platform-pl\/"},{"@type":"ListItem","position":3,"name":"Cloud Run \u2013 b\u0142yskawiczne wdra\u017canie aplikacji w chmurze Google"}]},{"@type":"WebSite","@id":"https:\/\/fotc.com\/pl\/#website","url":"https:\/\/fotc.com\/pl\/","name":"FOTC","description":"Partner Google Cloud","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fotc.com\/pl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pl-PL"},{"@type":"Person","@id":"https:\/\/fotc.com\/pl\/#\/schema\/person\/2863e62831e52977dbc3760888211ac0","name":"Ida O\u017carowska","image":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/secure.gravatar.com\/avatar\/18c4dcdfa1f953ebadf3f4b021f85b8ac02054980afb387081a042e567c4673a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/18c4dcdfa1f953ebadf3f4b021f85b8ac02054980afb387081a042e567c4673a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/18c4dcdfa1f953ebadf3f4b021f85b8ac02054980afb387081a042e567c4673a?s=96&d=mm&r=g","caption":"Ida O\u017carowska"},"description":"Ida has a Master's Degree in Communication Management from the University of Wroc\u0142aw. For over 7 years, she has been creating content that connects the worlds of technology and business. At FOTC, she is a Content Manager.","url":"https:\/\/fotc.com\/pl\/blog\/author\/ida-ozarowska\/"}]}},"_links":{"self":[{"href":"https:\/\/fotc.com\/pl\/wp-json\/wp\/v2\/posts\/41873","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fotc.com\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fotc.com\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fotc.com\/pl\/wp-json\/wp\/v2\/users\/13"}],"replies":[{"embeddable":true,"href":"https:\/\/fotc.com\/pl\/wp-json\/wp\/v2\/comments?post=41873"}],"version-history":[{"count":0,"href":"https:\/\/fotc.com\/pl\/wp-json\/wp\/v2\/posts\/41873\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/fotc.com\/pl\/wp-json\/wp\/v2\/media\/41891"}],"wp:attachment":[{"href":"https:\/\/fotc.com\/pl\/wp-json\/wp\/v2\/media?parent=41873"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fotc.com\/pl\/wp-json\/wp\/v2\/categories?post=41873"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fotc.com\/pl\/wp-json\/wp\/v2\/tags?post=41873"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}