﻿
{"id":14849,"date":"2020-04-03T20:46:50","date_gmt":"2020-04-03T20:46:50","guid":{"rendered":"https:\/\/www.gencayyildiz.com\/blog\/?p=14849"},"modified":"2020-04-03T20:46:50","modified_gmt":"2020-04-03T20:46:50","slug":"docker-volume-ile-verilerin-kaliciligini-saglama","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/docker-volume-ile-verilerin-kaliciligini-saglama\/","title":{"rendered":"Docker &#8211; Volume \u0130le Verilerin Kal\u0131c\u0131l\u0131\u011f\u0131n\u0131 Sa\u011flama"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Merhaba,<\/p>\n<p>Bu i\u00e7eri\u011fimizde <a href=\"https:\/\/www.gencayyildiz.com\/blog\/dockerda-uretilen-verilerin-kaliciligini-saglama\/\" target=\"_blank\" rel=\"noopener noreferrer\">Docker\u2019da \u00dcretilen Verilerin Kal\u0131c\u0131l\u0131\u011f\u0131n\u0131 Sa\u011flama<\/a> ba\u015fl\u0131kl\u0131 yaz\u0131m\u0131z\u0131n ikinci y\u00f6ntemi olan Docker Volume ile containerda \u00fcretilen verilerin kal\u0131c\u0131l\u0131\u011f\u0131n\u0131n nas\u0131l sa\u011fland\u0131\u011f\u0131n\u0131 inceleyece\u011fiz.<\/p>\n<h3>Docker Volume Nedir?<\/h3>\n<p>Docker, saniyeler i\u00e7erisinde bir container\u0131 aya\u011fa kald\u0131r\u0131p bu container \u00fczerinden uygulamam\u0131z\u0131 yay\u0131nlayabilen ve \u00fcretilen containerlar\u0131 imha etmedi\u011fimiz taktirde uzun bir s\u00fcre kullanmam\u0131za m\u00fcsade edebilen bir platformdur. Lakin bizler \u00fcretilen containerlar\u0131 uzun soluklu bir kullan\u0131ma tabi tutmaktansa, i\u00e7erisindeki uygulaman\u0131n geli\u015fimine paralel olacak \u015fekilde yeni g\u00fcncellemeleri ve restorasyonlar\u0131da bar\u0131nd\u0131racak vaziyette k\u0131sa aral\u0131kl\u0131 \u00fcretilen containerlar \u00fczerinden i\u015flemlerimizi yapmay\u0131 ve bu i\u015flemleri yaparken \u00f6nceki \u00fcretilenleri imha etmeyi tercih edebiliriz.<\/p>\n<p><a href=\"https:\/\/www.gencayyildiz.com\/blog\/dockerfile-docker-image-docker-registry-ve-docker-container-kavramlari-nelerdir\/\" target=\"_blank\" rel=\"noopener noreferrer\">\u00d6nceki makale<\/a>lerimizden de biliyoruz ki, containerlar aya\u011fa kald\u0131r\u0131ld\u0131klar\u0131 esnada image \u00fczerine eklenen okunabilir ve yaz\u0131labilir bir katman \u00fczerinde \u00fcretilen verileri tutarlar. Halile Docker Host \u00fczerinde herhangi bir durum bilgisi bar\u0131nd\u0131rmaks\u0131z\u0131n(stateless) \u00e7al\u0131\u015fan bu containerlar herhangi bir imha s\u00f6z konusu oldu\u011funda bu okunabilir ve yaz\u0131labilir katman\u0131nda silinmesiyle birlikte t\u00fcm verileri geri d\u00f6n\u00fc\u015fs\u00fcz kaybedeceklerdir.<\/p>\n<p>\u0130\u015fte b\u00f6yle bir durum, her ne kadar geli\u015ftirilen uygulama i\u00e7in uygun olmasada, biz yaz\u0131l\u0131mc\u0131lar ve s\u00fcre\u00e7teki testerlar a\u00e7\u0131s\u0131ndan da pek tercih edilebilir bir durum de\u011fildir. Nihayetin imajdan yarat\u0131lan bir container\u0131n s\u0131rf i\u00e7erisinde \u00fcretilen veriler kaybolmas\u0131n diye \u00fcretildi\u011fi ilk andan \u015fu ana kadar imha edilmeden \u00e7al\u0131\u015ft\u0131r\u0131lmas\u0131 ve kullan\u0131lmas\u0131, yay\u0131n yap\u0131lan uygulama a\u00e7\u0131s\u0131ndan da yersiz bir ba\u011f\u0131ml\u0131l\u0131k do\u011furmakta ve yap\u0131lan g\u00fcncellemelerin ve restorasyonlar\u0131n ilgili yay\u0131na yans\u0131t\u0131lamamas\u0131ndan dolay\u0131 Docker&#8217;\u0131n da sanalla\u015ft\u0131rman\u0131nda pek bir anlam\u0131 kalmamaktad\u0131r. Ayr\u0131ca d\u00fczenli bir \u015fekilde Docker containerlar\u0131nda yay\u0131n yapan hasbel kader bir uygulaman\u0131n verilerinin tamamen kaybolmas\u0131 ve yeniden olu\u015fturulmas\u0131 vs. gibi l\u00fcks\u00fc olmad\u0131\u011f\u0131 i\u00e7in bu durum olduk\u00e7a kritik arz etmektedir.<\/p>\n<p>Zaten bu tarz, bir uygulaman\u0131n geli\u015ftirilmesiyle birlikte bir yandan da yay\u0131n\u0131n\u0131n yap\u0131lmas\u0131 durumunu ifade eden Continuous Integration(S\u00fcrekli Entegrasyon)(CI) &amp; Continuous Delivery\/Deployment(S\u00fcrekli Teslimat\/Da\u011f\u0131t\u0131m)(CD) yaz\u0131l\u0131m geli\u015ftirme modellerinde de olu\u015fturulmu\u015f bir container\u0131n i\u015fi bitti\u011fi taktirde imha edilip sonras\u0131nda ihtiya\u00e7 do\u011frultusunda bir yenisinin \u00fcretilmesi tavsiye edilmektedir.<\/p>\n<p>Dolay\u0131s\u0131yla b\u00f6yle bir durumda \u00fcretilen containerlarda verisel a\u00e7\u0131dan bir kay\u0131p ya\u015famamak i\u00e7in yap\u0131lan i\u015flemler ve test s\u00fcrecinde \u00fcretilen verileri kal\u0131c\u0131 hale getirerek container ba\u011f\u0131ml\u0131l\u0131\u011f\u0131n\u0131 ortadan kald\u0131rmam\u0131z gerekmektedir. Containerlarda \u00fcretilen verileri kal\u0131c\u0131 hale getirebilmek ve dinamik bir geli\u015fim s\u00fcrecini destekleyebilmek i\u00e7in i\u00e7in Docker Valume teknolojisini kullanabilirsiniz.<\/p>\n<p><strong>Peki verileri kal\u0131c\u0131 hale getirirken Docker Volume&#8217;\u00fcn <a href=\"https:\/\/www.gencayyildiz.com\/blog\/docker-bind-mount-ile-verilerin-kaliciligini-saglama\/\" target=\"_blank\" rel=\"noopener noreferrer\">Bind Mount<\/a>&#8216;tan ne fark\u0131 var?<\/strong><br \/>\nBind Mount&#8217;da container taraf\u0131nda \u00fcretilen veriler ana makine \u00fczerindeki i\u015fletim sisteminde ayr\u0131lan bir alanda tutulmaktad\u0131r. Docker Volume&#8217;de ise veriler Docker seviyesinde tutulmaktad\u0131r. Dolay\u0131s\u0131yla Docker CLI ile y\u00f6netilebilmekte ve backup, restore, migrate vs. gibi i\u015flemler daha dinamik ger\u00e7ekle\u015ftirilebilmektedir. Hem Windows hem de Linux ortamlarda \u00e7al\u0131\u015fabilmektedirler. T\u00fcm bunlar\u0131n yan\u0131nda cloud ortamda depolanabilmekte ve b\u00f6ylece ortam ile birlikte sunuculara olan ba\u011f\u0131ml\u0131l\u0131\u011f\u0131 koparabilmektedirler.<\/p>\n<h3>Docker Volume Nas\u0131l Kullan\u0131l\u0131r?<\/h3>\n<p>Docker \u00fczerinde aya\u011fa kald\u0131r\u0131lan containerlar \u00fcretilen volumeler ile e\u015fle\u015ferek verilerini depolamaktad\u0131rlar. Dolay\u0131s\u0131yla container imha edilse dahi e\u015fle\u015ftikleri volumeler var olmaya devam edeceklerinden dolay\u0131 veri g\u00fcvenli\u011fi sa\u011flanmakta ve yeni \u00fcretilen containerlar ile mevcut volumeler tekrar e\u015fle\u015ftirilerek var olan verilerle \u00e7al\u0131\u015fmaya devam edebilmektedirler.<\/p>\n<h3>Docker Volume Nas\u0131l Olu\u015fturulur?<\/h3>\n<p>Docker Volume&#8217;\u00fc<\/p>\n<ol>\n<li>Dockerfile<\/li>\n<li>Docker CLI<\/li>\n<\/ol>\n<p>olmak \u00fczere 2 farkl\u0131 yolla olu\u015fturabilmekteyiz. \u015eimdi gelin s\u0131ras\u0131yla bu yollar\u0131 inceleyelim&#8230;<\/p>\n<h5>Dockerfile Dosyas\u0131 \u0130le Docker Volume Olu\u015fturma<\/h5>\n<p>Docker Volume&#8217;\u00fc olu\u015fturabilmek i\u00e7in Dockerfile dosyas\u0131nda bir &#8216;VOLUME&#8217; belirlenebilir.<br \/>\n\u00d6rne\u011fin;<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\nFROM mcr.microsoft.com\/dotnet\/core\/sdk as sdkimage\r\nVOLUME &#x5B;&quot;\/images&quot;]\r\nWORKDIR \/app\r\nCOPY . .\r\nRUN dotnet restore\r\nRUN dotnet publish DockerizeExampleProject.csproj -c Release -o out\r\nFROM mcr.microsoft.com\/dotnet\/core\/aspnet:3.1\r\nWORKDIR \/app\r\nCOPY --from=sdkimage \/app\/out .\r\nENV ASPNETCORE_URLS=&quot;http:\/\/*:1453&quot;\r\nENTRYPOINT &#x5B;&quot;dotnet&quot;, &quot;DockerizeExampleProject.dll&quot;]\r\n<\/pre>\n<p>\u015feklinde tasarlanan bir Dockerfile dosyas\u0131nda 2. sat\u0131rda g\u00f6r\u00fcld\u00fc\u011f\u00fc \u00fczere &#8216;VOLUME [&#8220;\/images&#8221;]&#8217; bir volume talimat\u0131 verilmi\u015ftir. Bu Dockerfile&#8217;dan \u00fcretilen t\u00fcm imajlardan aya\u011fa kald\u0131r\u0131lacak containerlarda bu volume ile e\u015fle\u015ftirme sa\u011flanarak veriler depolanabilir.<\/p>\n<h5>Docker CLI \u0130le Docker Volume Olu\u015fturma<\/h5>\n<p>En kullan\u0131\u015fl\u0131 y\u00f6ntem ise CLI kullanmakt\u0131r diyebiliriz. A\u015fa\u011f\u0131daki komutla bir volume rahat\u00e7a olu\u015fturulabilir.<\/p>\n<p><strong style=\"font-size: 10px; color: red;\"><u>PROTOT\u0130P<\/u><\/strong><br \/>\n<em>docker volume create &lt;volume_name&gt;<\/em><\/p>\n<p><strong style=\"font-size: 10px; color: red;\"><u>KOD<\/u><\/strong><br \/>\n<code style=\"color: red;\"><strong><em>docker volume create images<\/em><\/strong><\/code><\/p>\n<p>B\u00f6ylece &#8216;images&#8217; ad\u0131nda bir volume hali haz\u0131rda kullan\u0131lmay\u0131 bekler vaziyette olu\u015fturulmu\u015ftur.<\/p>\n<h3>Container \u0130le Docker Volume E\u015fle\u015ftirme<\/h3>\n<p>Yukar\u0131larda bahsetti\u011fim gibi containerlar mevcut volumeler ile e\u015fle\u015ftirilerek verilerini kal\u0131c\u0131 hale getirmektedirler. Dolay\u0131s\u0131yla art\u0131k \u00fcretilen volumelerin bir container ile nas\u0131l e\u015fle\u015ftirilebildi\u011fini inceleyebiliriz. Aya\u011fa kald\u0131r\u0131lan bir container\u0131n bir volume ile e\u015fle\u015ftirilebilmesi i\u00e7in a\u015fa\u011f\u0131daki \u00e7al\u0131\u015fmay\u0131 ger\u00e7ekle\u015ftirmelisiniz.<\/p>\n<table>\n<thead>\n<tr>\n<th>PROTOT\u0130P<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\"><strong style=\"color: red;\">docker run &#8211;rm -d -p &lt;port_out&gt;:&lt;port_in&gt; &#8211;name &lt;container_name&gt; <span style=\"color: blue;\">-v &lt;volume_name&gt;:&#8221;&lt;target_path&gt;&#8221;<\/span> &lt;image_name&gt;<\/strong><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table>\n<thead>\n<tr>\n<th>A\u00c7IKLAMA<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\"><strong><span style=\"color: blue;\">-v &lt;volume_name&gt;:&#8221;&lt;target_path&gt;&#8221;<\/span> : -v parametresi &#8211;volume olarak da belirtilebilir. Aya\u011fa kald\u0131r\u0131lacak container\u0131n hangi volume ile e\u015fle\u015fece\u011fini(volume_name) ve hangi hedefteki verileri depoyalaca\u011f\u0131n\u0131(target_path) belirtir.<\/strong><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong style=\"font-size: 10px; color: red;\"><u>\u00d6RNEK KOD<\/u><\/strong> : <code style=\"color: red;\"><strong>docker run --rm -d -p 1071:1453 --name cont1 -v images:\"\/app\/wwwroot\/images\" appimage:v1<\/strong><\/code><\/p>\n<p><strong>\u00d6rnek Kullan\u0131m<\/strong><br \/>\n<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Docker-\u2013-Volume-\u0130le-Verilerin-Kal\u0131c\u0131l\u0131\u011f\u0131n\u0131-Sa\u011flama.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-14902\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Docker-\u2013-Volume-\u0130le-Verilerin-Kal\u0131c\u0131l\u0131\u011f\u0131n\u0131-Sa\u011flama.jpg\" alt=\"Docker \u2013 Volume \u0130le Verilerin Kal\u0131c\u0131l\u0131\u011f\u0131n\u0131 Sa\u011flama\" width=\"1198\" height=\"189\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Docker-\u2013-Volume-\u0130le-Verilerin-Kal\u0131c\u0131l\u0131\u011f\u0131n\u0131-Sa\u011flama.jpg 1198w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Docker-\u2013-Volume-\u0130le-Verilerin-Kal\u0131c\u0131l\u0131\u011f\u0131n\u0131-Sa\u011flama-300x47.jpg 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Docker-\u2013-Volume-\u0130le-Verilerin-Kal\u0131c\u0131l\u0131\u011f\u0131n\u0131-Sa\u011flama-1024x162.jpg 1024w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Docker-\u2013-Volume-\u0130le-Verilerin-Kal\u0131c\u0131l\u0131\u011f\u0131n\u0131-Sa\u011flama-768x121.jpg 768w\" sizes=\"auto, (max-width: 1198px) 100vw, 1198px\" \/><\/a><br \/>\nYukar\u0131da yaz\u0131lan Docker CLI komutlar\u0131n\u0131 incelerseniz e\u011fer &#8216;cont1&#8217; ve &#8216;cont2&#8217; containerlar\u0131 &#8216;images&#8217;, &#8216;cont3&#8217; ve &#8216;cont4&#8217; containerlar\u0131 ise de &#8216;images2&#8217; volumelerini kullanmak \u00fczere d\u00f6rt farkl\u0131 container \u00fcretilmi\u015ftir. Bu containerlardaki uygulamalar\u0131n kullan\u0131m\u0131 a\u015fa\u011f\u0131daki gibi olacakt\u0131r;<\/p>\n<p><a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Docker-Volume-\u0130le-Verilerin-Kal\u0131c\u0131l\u0131\u011f\u0131n\u0131-Sa\u011flama.gif\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-14907\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Docker-Volume-\u0130le-Verilerin-Kal\u0131c\u0131l\u0131\u011f\u0131n\u0131-Sa\u011flama.gif\" alt=\"Docker - Volume \u0130le Verilerin Kal\u0131c\u0131l\u0131\u011f\u0131n\u0131 Sa\u011flama\" width=\"800\" height=\"378\" \/><\/a><br \/>\nG\u00f6r\u00fcld\u00fc\u011f\u00fc \u00fczere olu\u015fturulan t\u00fcm containerlar kulland\u0131klar\u0131 volumelerden verisel olarak beslenmekte ve birbirlerinden izole edilmi\u015f bir vaziyette \u00e7al\u0131\u015fmaktad\u0131rlar.<\/p>\n<h3>Docker Volume Backup Alma<\/h3>\n<p>Docker Volume backup alabilmek i\u00e7in a\u015fa\u011f\u0131daki prototipte CLI kodunu \u00e7al\u0131\u015ft\u0131r\u0131n\u0131z.<\/p>\n<p><strong style=\"font-size: 10px; color: red;\"><u>PROTOT\u0130P<\/u><\/strong><br \/>\n<em>docker run -v &lt;volume_name&gt;:\/volume -v &lt;target_path&gt;:\/backup &#8211;rm loomchild\/volume-backup <span style=\"color: blue;\">backup<\/span> &lt;backup_name&gt;<\/em><\/p>\n<p><strong style=\"font-size: 10px; color: red;\"><u>KOD<\/u><\/strong><br \/>\n<code style=\"color: red;\"><strong>docker run -v images:\/volume -v C:\/Users\/Gen\u00e7ay\/Desktop\/Backup:\/backup --rm loomchild\/volume-backup <span style=\"color: blue;\">backup<\/span> some_archive<\/strong><\/code><\/p>\n<h3>Docker Volume Restore Etme<\/h3>\n<p>Restore i\u015flemi i\u00e7inse a\u015fa\u011f\u0131daki CLI kodunu kullanabilirsiniz.<br \/>\n<strong style=\"font-size: 10px; color: red;\"><u>PROTOT\u0130P<\/u><\/strong><br \/>\n<em>docker run -v &lt;volume_name&gt;:\/volume -v &lt;target_path&gt;:\/backup &#8211;rm loomchild\/volume-backup <span style=\"color: blue;\">restore<\/span> &lt;backup_name&gt;<\/em><\/p>\n<p><strong style=\"font-size: 10px; color: red;\"><u>KOD<\/u><\/strong><br \/>\n<code style=\"color: red;\">docker run -v images:\/volume -v C:\/Users\/Gen\u00e7ay\/Desktop\/Backup:\/backup --rm loomchild\/volume-backup <span style=\"color: blue;\">restore<\/span> some_archive<\/code><\/p>\n<h3>Docker Volume \u0130le \u0130lgili Di\u011fer \u0130\u015flemler<\/h3>\n<h5>T\u00fcm Volumeleri Listeleme<\/h5>\n<p><code style=\"color: red;\"><strong>docker volume ls<\/strong><\/code><\/p>\n<h5>Volume Silme<\/h5>\n<p><code style=\"color: red;\"><strong>docker volume rm &lt;volume_name&gt;<\/strong><\/code><br \/>\nT\u00fcm volumlerin silinmesi i\u00e7in;<br \/>\n<code style=\"color: red;\"><strong>docker volume prune<\/strong><\/code><\/p>\n<p>Nihai olarak;<br \/>\n\u00d6nemli ve s\u00fcregelen verilerin containerdan ba\u011f\u0131ms\u0131z bir \u015fekilde kal\u0131c\u0131 olmas\u0131n\u0131 sa\u011flayabilmek i\u00e7in Docker Volumelerin nas\u0131l kullan\u0131ld\u0131\u011f\u0131n\u0131 detayl\u0131ca incelemi\u015f olduk.<\/p>\n<p>\u0130lgilenenlerin faydalanmas\u0131 dile\u011fiyle&#8230;<br \/>\nSonraki yaz\u0131lar\u0131mda g\u00f6r\u00fc\u015fmek \u00fczere&#8230;<br \/>\n\u0130yi \u00e7al\u0131\u015fmalar&#8230;<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>Merhaba, Bu i\u00e7eri\u011fimizde Docker\u2019da \u00dcretilen Verilerin Kal\u0131c\u0131l\u0131\u011f\u0131n\u0131 Sa\u011flama ba\u015fl\u0131kl\u0131 yaz\u0131m\u0131z\u0131n ikinci y\u00f6ntemi olan Docker Volume ile containerda \u00fcretilen verilerin kal\u0131c\u0131l\u0131\u011f\u0131n\u0131n nas\u0131l sa\u011fland\u0131\u011f\u0131n\u0131 inceleyece\u011fiz. Docker Volume Nedir? Docker, saniyeler i\u00e7erisinde bir container\u0131 aya\u011fa kald\u0131r\u0131p bu&#46;&#46;&#46;<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":14762,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3281],"tags":[3358,3357,3355,3356,3354,3362,3363,3361,3359,3360],"class_list":["post-14849","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-docker","tag-cd","tag-ci","tag-continuous-delivery","tag-continuous-deployment","tag-continuous-integration","tag-docker-volume-backup-alma","tag-docker-volume-restore-etme","tag-surekli-dagitim","tag-surekli-entegrasyon","tag-surekli-teslimat"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/14849","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/comments?post=14849"}],"version-history":[{"count":68,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/14849\/revisions"}],"predecessor-version":[{"id":14919,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/14849\/revisions\/14919"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media\/14762"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=14849"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=14849"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=14849"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}