{"id":153,"date":"2026-05-15T18:15:36","date_gmt":"2026-05-15T16:15:36","guid":{"rendered":"https:\/\/gorankostic.com\/blog\/?p=153"},"modified":"2026-05-15T18:15:36","modified_gmt":"2026-05-15T16:15:36","slug":"persistent-storage-logic","status":"publish","type":"post","link":"https:\/\/gorankostic.com\/blog\/2026\/05\/15\/persistent-storage-logic\/","title":{"rendered":"Persistent Storage Logic"},"content":{"rendered":"\n<h1 class=\"wp-block-heading\">Persistent Storage Logic<\/h1>\n\n\n\n<p><strong>Odlomak: <\/strong><br>Persistent storage logic odre\u0111uje gde Docker sistemi \u010duvaju podatke koji moraju da pre\u017eive restart, rebuild ili zamenu container-a, kao \u0161to su baze, upload fajlovi, konfiguracije i trajni servisi.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Persistent Storage Logic<\/h2>\n\n\n\n<p>Persistent storage je jedan od najva\u017enijih delova Docker arhitekture, jer container sam po sebi nije mesto za trajne podatke. Container treba posmatrati kao potro\u0161an deo sistema koji mo\u017ee biti zaustavljen, obrisan, ponovo izgra\u0111en ili zamenjen novom verzijom.<\/p>\n\n\n\n<p>Ako se va\u017eni podaci nalaze samo unutar container-a, oni mogu nestati prilikom rebuild-a ili uklanjanja container-a. To je posebno opasno kod baza podataka, upload fajlova, konfiguracija, generisanih dokumenata i svega \u0161to aplikacija mora dugoro\u010dno da \u010duva.<\/p>\n\n\n\n<p>Docker volume-i re\u0161avaju ovaj problem tako \u0161to odvajaju podatke od samog container-a. Aplikacija mo\u017ee raditi unutar container-a, ali baza, fajlovi i trajni podaci ostaju u volume-u koji nastavlja da postoji i kada se container zameni.<\/p>\n\n\n\n<p>Postoje razli\u010diti pristupi skladi\u0161tenju podataka. Named volume-i su prakti\u010dni jer ih Docker sam organizuje, dok bind mount omogu\u0107ava da se konkretan folder sa servera mapira unutar container-a. Izbor zavisi od toga da li je prioritet jednostavnost, preglednost, backup ili direktan pristup fajlovima.<\/p>\n\n\n\n<p>Kod baza podataka persistent storage mora biti posebno pa\u017eljivo pode\u0161en. MySQL, PostgreSQL ili sli\u010dni servisi ne smeju \u010duvati podatke samo u container filesystem-u. Data directory mora biti vezan za volume, ina\u010de se rizikuje gubitak kompletne baze.<\/p>\n\n\n\n<p>Upload folderi su drugi \u010dest primer. Web aplikacije, CMS sistemi i interni alati \u010desto \u010duvaju slike, dokumente, export fajlove ili korisni\u010dki sadr\u017eaj. Ti folderi moraju biti deo persistent storage strategije, naro\u010dito ako se aplikacija redovno redeploy-uje.<\/p>\n\n\n\n<p>Konfiguracioni fajlovi tako\u0111e mogu biti trajni podaci. Reverse proxy konfiguracije, aplikaciona pode\u0161avanja, custom skripte i specifi\u010dni config fajlovi treba da budu jasno organizovani, a ne sakriveni unutar container-a gde ih je kasnije te\u0161ko prona\u0107i.<\/p>\n\n\n\n<p>Backup strategija mora pratiti storage logiku. Nije dovoljno znati da volume postoji; treba znati gde su podaci, kako se backup-uju, kako se restore-uju i \u0161ta ta\u010dno treba sa\u010duvati pre update-a ili migracije.<\/p>\n\n\n\n<p>Persistent storage je va\u017ean i za migraciju. Ako su podaci jasno odvojeni od container-a, mnogo je lak\u0161e prebaciti sistem na drugi server, rekonstruisati stack ili pokrenuti novu verziju servisa bez gubitka podataka.<\/p>\n\n\n\n<p>Dobra persistent storage logic pravi razliku izme\u0111u Docker setup-a koji samo trenutno radi i sistema koji je spreman za produkciju. Kada su baze, upload-i, konfiguracije, backup i restore jasno definisani, container infrastruktura postaje mnogo sigurnija, stabilnija i lak\u0161a za odr\u017eavanje.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Persistent storage logic odre\u0111uje gde Docker sistemi \u010duvaju podatke koji moraju da pre\u017eive restart, rebuild ili zamenu container-a, kao \u0161to su baze, upload fajlovi, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7,6],"tags":[],"class_list":["post-153","post","type-post","status-publish","format-standard","hentry","category-docker-environments","category-infrastructure"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.5 (Yoast SEO v27.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Persistent Storage Logic - Goran Kostic Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/gorankostic.com\/blog\/2026\/05\/15\/persistent-storage-logic\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Persistent Storage Logic\" \/>\n<meta property=\"og:description\" content=\"Persistent storage logic odre\u0111uje gde Docker sistemi \u010duvaju podatke koji moraju da pre\u017eive restart, rebuild ili zamenu container-a, kao \u0161to su baze, upload fajlovi, [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/gorankostic.com\/blog\/2026\/05\/15\/persistent-storage-logic\/\" \/>\n<meta property=\"og:site_name\" content=\"Goran Kostic Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-05-15T16:15:36+00:00\" \/>\n<meta name=\"author\" content=\"WebixDesign\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"WebixDesign\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/2026\\\/05\\\/15\\\/persistent-storage-logic\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/2026\\\/05\\\/15\\\/persistent-storage-logic\\\/\"},\"author\":{\"name\":\"WebixDesign\",\"@id\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/#\\\/schema\\\/person\\\/0f800bfa90359ff9d2204020d58099c8\"},\"headline\":\"Persistent Storage Logic\",\"datePublished\":\"2026-05-15T16:15:36+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/2026\\\/05\\\/15\\\/persistent-storage-logic\\\/\"},\"wordCount\":431,\"commentCount\":0,\"articleSection\":[\"Docker Environments\",\"INFRASTRUCTURE\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/gorankostic.com\\\/blog\\\/2026\\\/05\\\/15\\\/persistent-storage-logic\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/2026\\\/05\\\/15\\\/persistent-storage-logic\\\/\",\"url\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/2026\\\/05\\\/15\\\/persistent-storage-logic\\\/\",\"name\":\"Persistent Storage Logic - Goran Kostic Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/#website\"},\"datePublished\":\"2026-05-15T16:15:36+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/#\\\/schema\\\/person\\\/0f800bfa90359ff9d2204020d58099c8\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/2026\\\/05\\\/15\\\/persistent-storage-logic\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/gorankostic.com\\\/blog\\\/2026\\\/05\\\/15\\\/persistent-storage-logic\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/2026\\\/05\\\/15\\\/persistent-storage-logic\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Persistent Storage Logic\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/\",\"name\":\"Goran Kostic Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/#\\\/schema\\\/person\\\/0f800bfa90359ff9d2204020d58099c8\",\"name\":\"WebixDesign\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/0b4c4d73af3b6d4c23d5191555e82cdc78a86604f69eae8d2c3d23e45d3967c5?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/0b4c4d73af3b6d4c23d5191555e82cdc78a86604f69eae8d2c3d23e45d3967c5?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/0b4c4d73af3b6d4c23d5191555e82cdc78a86604f69eae8d2c3d23e45d3967c5?s=96&d=mm&r=g\",\"caption\":\"WebixDesign\"},\"sameAs\":[\"https:\\\/\\\/gorankostic.com\\\/blog\"],\"url\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/author\\\/webixdesign\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Persistent Storage Logic - Goran Kostic Blog","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:\/\/gorankostic.com\/blog\/2026\/05\/15\/persistent-storage-logic\/","og_locale":"en_US","og_type":"article","og_title":"Persistent Storage Logic","og_description":"Persistent storage logic odre\u0111uje gde Docker sistemi \u010duvaju podatke koji moraju da pre\u017eive restart, rebuild ili zamenu container-a, kao \u0161to su baze, upload fajlovi, [&hellip;]","og_url":"https:\/\/gorankostic.com\/blog\/2026\/05\/15\/persistent-storage-logic\/","og_site_name":"Goran Kostic Blog","article_published_time":"2026-05-15T16:15:36+00:00","author":"WebixDesign","twitter_card":"summary_large_image","twitter_misc":{"Written by":"WebixDesign","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/gorankostic.com\/blog\/2026\/05\/15\/persistent-storage-logic\/#article","isPartOf":{"@id":"https:\/\/gorankostic.com\/blog\/2026\/05\/15\/persistent-storage-logic\/"},"author":{"name":"WebixDesign","@id":"https:\/\/gorankostic.com\/blog\/#\/schema\/person\/0f800bfa90359ff9d2204020d58099c8"},"headline":"Persistent Storage Logic","datePublished":"2026-05-15T16:15:36+00:00","mainEntityOfPage":{"@id":"https:\/\/gorankostic.com\/blog\/2026\/05\/15\/persistent-storage-logic\/"},"wordCount":431,"commentCount":0,"articleSection":["Docker Environments","INFRASTRUCTURE"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/gorankostic.com\/blog\/2026\/05\/15\/persistent-storage-logic\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/gorankostic.com\/blog\/2026\/05\/15\/persistent-storage-logic\/","url":"https:\/\/gorankostic.com\/blog\/2026\/05\/15\/persistent-storage-logic\/","name":"Persistent Storage Logic - Goran Kostic Blog","isPartOf":{"@id":"https:\/\/gorankostic.com\/blog\/#website"},"datePublished":"2026-05-15T16:15:36+00:00","author":{"@id":"https:\/\/gorankostic.com\/blog\/#\/schema\/person\/0f800bfa90359ff9d2204020d58099c8"},"breadcrumb":{"@id":"https:\/\/gorankostic.com\/blog\/2026\/05\/15\/persistent-storage-logic\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/gorankostic.com\/blog\/2026\/05\/15\/persistent-storage-logic\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/gorankostic.com\/blog\/2026\/05\/15\/persistent-storage-logic\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/gorankostic.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Persistent Storage Logic"}]},{"@type":"WebSite","@id":"https:\/\/gorankostic.com\/blog\/#website","url":"https:\/\/gorankostic.com\/blog\/","name":"Goran Kostic Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/gorankostic.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/gorankostic.com\/blog\/#\/schema\/person\/0f800bfa90359ff9d2204020d58099c8","name":"WebixDesign","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/0b4c4d73af3b6d4c23d5191555e82cdc78a86604f69eae8d2c3d23e45d3967c5?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/0b4c4d73af3b6d4c23d5191555e82cdc78a86604f69eae8d2c3d23e45d3967c5?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0b4c4d73af3b6d4c23d5191555e82cdc78a86604f69eae8d2c3d23e45d3967c5?s=96&d=mm&r=g","caption":"WebixDesign"},"sameAs":["https:\/\/gorankostic.com\/blog"],"url":"https:\/\/gorankostic.com\/blog\/author\/webixdesign\/"}]}},"_links":{"self":[{"href":"https:\/\/gorankostic.com\/blog\/wp-json\/wp\/v2\/posts\/153","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gorankostic.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gorankostic.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gorankostic.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gorankostic.com\/blog\/wp-json\/wp\/v2\/comments?post=153"}],"version-history":[{"count":1,"href":"https:\/\/gorankostic.com\/blog\/wp-json\/wp\/v2\/posts\/153\/revisions"}],"predecessor-version":[{"id":154,"href":"https:\/\/gorankostic.com\/blog\/wp-json\/wp\/v2\/posts\/153\/revisions\/154"}],"wp:attachment":[{"href":"https:\/\/gorankostic.com\/blog\/wp-json\/wp\/v2\/media?parent=153"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gorankostic.com\/blog\/wp-json\/wp\/v2\/categories?post=153"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gorankostic.com\/blog\/wp-json\/wp\/v2\/tags?post=153"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}