{"id":12617,"date":"2023-11-27T09:31:08","date_gmt":"2023-11-27T08:31:08","guid":{"rendered":"https:\/\/dhosting.pl\/pomoc\/?post_type=manual_kb&#038;p=12617"},"modified":"2023-11-27T09:31:08","modified_gmt":"2023-11-27T08:31:08","slug":"struktura-konteneryzacji-w-dockerze","status":"publish","type":"manual_kb","link":"https:\/\/dhosting.pl\/pomoc\/baza-wiedzy\/struktura-konteneryzacji-w-dockerze\/","title":{"rendered":"Struktura konteneryzacji w dockerze"},"content":{"rendered":"<p>Struktura konteneryzacji w Dockerze opiera si\u0119 na kilku kluczowych elementach, takich jak Dockerfile, Docker Image, Docker Container, a tak\u017ce inne pliki i konfiguracje, kt\u00f3re s\u0105 niezb\u0119dne do poprawnego uruchomienia aplikacji. Poni\u017cej przedstawiam prost\u0105 struktur\u0119 konteneryzacji przy u\u017cyciu Docker&#8217;a:<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_83 ez-toc-wrap-left counter-flat ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Spis tre\u015bci<\/p>\n<span class=\"ez-toc-title-toggle\"><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/dhosting.pl\/pomoc\/baza-wiedzy\/struktura-konteneryzacji-w-dockerze\/#1_Dockerfile\" >1. Dockerfile<\/a><\/li><li class='ez-toc-page-1'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/dhosting.pl\/pomoc\/baza-wiedzy\/struktura-konteneryzacji-w-dockerze\/#2_requirementstxt\" >2. requirements.txt<\/a><\/li><li class='ez-toc-page-1'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/dhosting.pl\/pomoc\/baza-wiedzy\/struktura-konteneryzacji-w-dockerze\/#3_apppy\" >3. app.py<\/a><\/li><li class='ez-toc-page-1'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/dhosting.pl\/pomoc\/baza-wiedzy\/struktura-konteneryzacji-w-dockerze\/#4_docker-composeyml\" >4. docker-compose.yml<\/a><\/li><li class='ez-toc-page-1'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/dhosting.pl\/pomoc\/baza-wiedzy\/struktura-konteneryzacji-w-dockerze\/#5_Uruchomienie_kontenera\" >5. Uruchomienie kontenera<\/a><\/li><li class='ez-toc-page-1'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/dhosting.pl\/pomoc\/baza-wiedzy\/struktura-konteneryzacji-w-dockerze\/#Podsumowanie\" >Podsumowanie:<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"1_Dockerfile\"><\/span>1. <strong>Dockerfile<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Plik Dockerfile to instrukcje, kt\u00f3re Docker wykorzystuje do automatycznego budowania obrazu kontenera. Poni\u017cej znajduje si\u0119 przyk\u0142ad prostego Dockerfile dla aplikacji opartej na j\u0119zyku Python:<\/p>\n<pre class=\"line-numbers\"><code class=\"language-php\" data-line=\"\"># Wybieramy obraz bazowy (np. obraz z Pythonem)\nFROM python:3.8\n\n# Ustawienie katalogu roboczego w kontenerze\nWORKDIR \/app\n\n# Kopiowanie plik\u00f3w aplikacji do katalogu \/app w kontenerze\nCOPY . \/app\n\n# Instalacja zale\u017cno\u015bci\nRUN pip install -r requirements.txt\n\n# Okre\u015blenie komendy, kt\u00f3ra ma by\u0107 uruchomiona podczas startu kontenera\nCMD [&quot;python&quot;, &quot;app.py&quot;]<\/code><\/pre>\n<div id=\"dhost-577851741\" class=\"dhost-inpost dhost-entity-placement\"><a href=\"https:\/\/dhosting.pl\/opieka-stron.html?utm_source=pomoc&utm_medium=artykul&utm_campaign=pomoc\" target=\"_blank\">\r\n\t<img decoding=\"async\" src=\"https:\/\/dhosting.pl\/pomoc\/wp-content\/uploads\/2025\/01\/baner-opieka.png\" alt=\"opieka stron www\">\r\n<\/a>\r\n<br \/>\r\n<br \/><\/div><h2><span class=\"ez-toc-section\" id=\"2_requirementstxt\"><\/span>2. <strong>requirements.txt<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Plik zawieraj\u0105cy list\u0119 zale\u017cno\u015bci dla aplikacji Python. Dockerfile korzysta z tego pliku do instalacji niezb\u0119dnych bibliotek.<\/p>\n<pre class=\"line-numbers\"><code class=\"language-php\" data-line=\"\">Flask==2.0.1<\/code><\/pre>\n<h2><span class=\"ez-toc-section\" id=\"3_apppy\"><\/span>3. <strong>app.py<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Przyk\u0142adowy plik \u017ar\u00f3d\u0142owy aplikacji Python (mo\u017ce to by\u0107 odpowiednik dla aplikacji w innym j\u0119zyku). W tym przyk\u0142adzie, zak\u0142adamy prosty serwer Flask.<\/p>\n<pre class=\"line-numbers\"><code class=\"language-php\" data-line=\"\">from flask import Flask\n\napp = Flask(__name__)\n\n@app.route(&#039;\/&#039;)\ndef hello_world():\n    return &#039;Hello, Dockerized World!&#039;\n\nif __name__ == &#039;__main__&#039;:\n    app.run(debug=True, host=&#039;0.0.0.0&#039;)<\/code><\/pre>\n<h2><span class=\"ez-toc-section\" id=\"4_docker-composeyml\"><\/span>4. <strong>docker-compose.yml<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Docker Compose to narz\u0119dzie, kt\u00f3re umo\u017cliwia definiowanie i uruchamianie wielu kontener\u00f3w jako cz\u0119\u015bci jednej aplikacji. Poni\u017cej znajduje si\u0119 prosty plik docker-compose.yml dla naszej aplikacji Flask:<\/p>\n<pre class=\"line-numbers\"><code class=\"language-php\" data-line=\"\">version: &#039;3&#039;\nservices:\n  web:\n    build: .\n    ports:\n      - &quot;5000:5000&quot;<\/code><\/pre>\n<h2><span class=\"ez-toc-section\" id=\"5_Uruchomienie_kontenera\"><\/span>5. <strong>Uruchomienie kontenera<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Po zdefiniowaniu powy\u017cszych element\u00f3w, mo\u017cemy uruchomi\u0107 kontener za pomoc\u0105 polece\u0144:<\/p>\n<pre class=\"line-numbers\"><code class=\"language-php\" data-line=\"\"># Budowanie obrazu\ndocker build -t nazwa_obrazu .\n\n# Uruchamianie kontenera\ndocker run -p 5000:5000 nazwa_obrazu<\/code><\/pre>\n<h2><span class=\"ez-toc-section\" id=\"Podsumowanie\"><\/span>Podsumowanie:<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Powy\u017csza struktura to podstawowy przyk\u0142ad konteneryzacji aplikacji w Dockerze. W rzeczywistych projektach struktura mo\u017ce by\u0107 bardziej rozbudowana, obejmowa\u0107 dodatkowe pliki konfiguracyjne, dane, oraz uwzgl\u0119dnia\u0107 specyfik\u0119 danego \u015brodowiska i j\u0119zyka programowania. Docker umo\u017cliwia elastyczne dostosowanie konteneryzacji do potrzeb konkretnego projektu.<\/p>\n","protected":false},"author":6,"featured_media":10957,"parent":0,"menu_order":0,"template":"","format":"standard","manualknowledgebasecat":[121,118],"manual_kb_tag":[2997,655,4092,3517,4093,4094,3516],"class_list":["post-12617","manual_kb","type-manual_kb","status-publish","format-standard","has-post-thumbnail","hentry","manualknowledgebasecat-inne","manualknowledgebasecat-pozostale","manual_kb_tag-docker","manual_kb_tag-hosting","manual_kb_tag-konteneryzacja-w-dockerze","manual_kb_tag-polski-hosting","manual_kb_tag-struktura-konteneryzacji","manual_kb_tag-uruchomienie-kontenera-w-dockerze","manual_kb_tag-web-hosting"],"_links":{"self":[{"href":"https:\/\/dhosting.pl\/pomoc\/wp-json\/wp\/v2\/manual_kb\/12617","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dhosting.pl\/pomoc\/wp-json\/wp\/v2\/manual_kb"}],"about":[{"href":"https:\/\/dhosting.pl\/pomoc\/wp-json\/wp\/v2\/types\/manual_kb"}],"author":[{"embeddable":true,"href":"https:\/\/dhosting.pl\/pomoc\/wp-json\/wp\/v2\/users\/6"}],"version-history":[{"count":0,"href":"https:\/\/dhosting.pl\/pomoc\/wp-json\/wp\/v2\/manual_kb\/12617\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dhosting.pl\/pomoc\/wp-json\/wp\/v2\/media\/10957"}],"wp:attachment":[{"href":"https:\/\/dhosting.pl\/pomoc\/wp-json\/wp\/v2\/media?parent=12617"}],"wp:term":[{"taxonomy":"manualknowledgebasecat","embeddable":true,"href":"https:\/\/dhosting.pl\/pomoc\/wp-json\/wp\/v2\/manualknowledgebasecat?post=12617"},{"taxonomy":"manual_kb_tag","embeddable":true,"href":"https:\/\/dhosting.pl\/pomoc\/wp-json\/wp\/v2\/manual_kb_tag?post=12617"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}