﻿
{"id":14614,"date":"2020-03-27T14:21:26","date_gmt":"2020-03-27T14:21:26","guid":{"rendered":"https:\/\/www.gencayyildiz.com\/blog\/?p=14614"},"modified":"2020-03-27T14:21:26","modified_gmt":"2020-03-27T14:21:26","slug":"asp-net-core-uygulamasini-dockerize-etmek","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/asp-net-core-uygulamasini-dockerize-etmek\/","title":{"rendered":"Asp.NET Core Uygulamas\u0131n\u0131 Dockerize Etmek"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Merhaba,<\/p>\n<p><a href=\"https:\/\/www.gencayyildiz.com\/blog\/net-core-docker-yazi-dizisi\/\" rel=\"noopener noreferrer\" target=\"_blank\">.NET Core &#038; Docker yaz\u0131 dizimizin<\/a> bu i\u00e7eri\u011finde s\u0131ra herhangi bir Asp.NET Core uygulamas\u0131n\u0131n nas\u0131l dockerize edilebildi\u011fini ad\u0131m ad\u0131m incelemeye geldi. Esas\u0131nda yaz\u0131 serisindeki \u00f6nceki makalelerimizde bir uygulaman\u0131n dockerize edilebilmesi i\u00e7in neler yap\u0131lmas\u0131 gerekti\u011finin b\u00fcy\u00fck \u00e7o\u011funlu\u011funu inceledi\u011fimizden dolay\u0131 bu i\u00e7eri\u011fimizde hi\u00e7 zorluk ya\u015famadan ilerleyebilecek ve tabi ki yer yer ekstra yeni bilgiler serpi\u015ftirerek bilgi haznemizi geni\u015fletece\u011fiz.<\/p>\n<p>\u0130lk olarak hali haz\u0131rda bir Asp.NET Core uygulamas\u0131 olu\u015fturdu\u011fumuzu varsayal\u0131m. \u015eahsen ben pratik i\u00e7in bir Asp.NET Core MVC mimarisi se\u00e7ti\u011fimi ifade ederim. Bu konuda opsiyonel olunabilece\u011finden dolay\u0131 siz istedi\u011finiz bir mimariyi aya\u011fa kald\u0131r\u0131p e\u015flik edebilirsiniz.<\/p>\n<p>\u015eimdi t\u00fcm s\u00fcreci ad\u0131m ad\u0131m beraber inceleyelim;<\/p>\n<ul>\n<li><strong style=\"color:purple;\">Ad\u0131m 1<\/strong> <em style=\"color:green\";>Uygulamay\u0131 release etme<\/em><br \/>\nBir web uygulamas\u0131n\u0131 release ederek Docker container\u0131nda aya\u011fa kald\u0131rabilirsiniz. Lakin bu s\u00fcrekli geli\u015ftirilmek ve test edilmek zorunda kalan web uygulamalar\u0131 i\u00e7in sadece sunum ama\u00e7l\u0131 bir kullan\u0131m olaca\u011f\u0131ndan dolay\u0131 pekte kullan\u0131\u015fl\u0131 bir tercih olmayacakt\u0131r. O y\u00fczden biz bu i\u00e7eri\u011fimizde publish&#8217;i docker seviyesinde yapmay\u0131 planlayaca\u011f\u0131z. Bunun i\u00e7in release a\u015famas\u0131n\u0131 ilk olarak es ge\u00e7ip ilerideki ad\u0131mlar\u0131m\u0131zda neden es ge\u00e7ti\u011fimizi ve docker seviyesinde nas\u0131l ger\u00e7ekle\u015ftirmemiz gerekti\u011fini daha net anlam\u0131\u015f olaca\u011f\u0131z.\n<\/li>\n<li><strong style=\"color:purple;\">Ad\u0131m 2<\/strong> <em style=\"color:green\";>Dockerfile dosyas\u0131 olu\u015fturma<\/em><br \/>\n\u015eimdi her\u015feyden \u00f6nce web uygulamam\u0131z\u0131n ortam\u0131n\u0131 d\u00fczenleyece\u011fimiz talimatlar\u0131 bar\u0131nd\u0131racak olan Dockerfile dosyas\u0131n\u0131 olu\u015fturmal\u0131y\u0131z. Bu dosyay\u0131 olu\u015fturabilmek i\u00e7in s\u0131ras\u0131yla <em>&#8216;Projeye Sa\u011f T\u0131k&#8217; -> &#8216;Add&#8217; -> &#8216;Docker Support&#8230;&#8217;<\/em> kombinasyonunu uygulay\u0131n\u0131z.<\/p>\n<p>Bu i\u015flemden sonra olu\u015fturulacak Dockerfile dosyas\u0131n\u0131n i\u00e7erisine a\u015fa\u011f\u0131daki talimatlar\u0131 giriniz.<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\nFROM mcr.microsoft.com\/dotnet\/core\/sdk:3.1\r\nWORKDIR \/app\r\nCOPY . .\r\nRUN dotnet restore\r\nRUN dotnet publish DockerizeWebExample.csproj -c Release -o out\r\nWORKDIR out\r\nENV ASPNETCORE_URLS=&quot;http:\/\/*:1453&quot;\r\nENTRYPOINT &#x5B;&quot;dotnet&quot;, &quot;DockerizeWebExample.dll&quot;]\r\n<\/pre>\n<p>Talimatlar\u0131 incelersek e\u011fer;<\/p>\n<ul>\n<li><em style=\"color: gray;\">1. Talimat<\/em><br \/>\nDocker Hub&#8217;dan <a href=\"https:\/\/hub.docker.com\/_\/microsoft-dotnet-core-sdk\/\" rel=\"noopener noreferrer\" target=\"_blank\">.NET Core SDK<\/a> imaj\u0131n\u0131 \u00e7ekiyoruz. <strong>Peki hoca neden Runtime de\u011filde SDK imaj\u0131n\u0131 \u00e7ekiyorsun?<\/strong> sorunuzu duyar gibiyim \ud83d\ude42 Evet, normalde <a href=\"https:\/\/hub.docker.com\/_\/microsoft-dotnet-core-aspnet\" rel=\"noopener noreferrer\" target=\"_blank\">Asp.NET Core Runtime<\/a> imaj\u0131n\u0131 \u00e7ekmemiz sunum a\u00e7\u0131s\u0131ndan daha az maliyetli olacakt\u0131r. Lakin geli\u015ftirme s\u00fcrecindeki uygulamalarda DOTNET CLI kullan\u0131larak \u00fczerinde canl\u0131 i\u015flemler yapabilmek i\u00e7in bizler Docker i\u00e7erisinde Runtime yerine SDK&#8217;y\u0131 y\u00fcklemeyi tercih edebilir ve b\u00f6ylece Docker i\u00e7erisinde gerekli dotnet cli komutlar\u0131n\u0131 kullanabilmenin yolunu a\u00e7m\u0131\u015f oluruz. Dolay\u0131s\u0131yla her yeni bir i\u015flem neticesinde uygulamay\u0131 publish edip tekrar tekrar imaj haline getirip aya\u011fa kald\u0131rmaktansa, docker i\u00e7erisinde bu i\u015flemi yapabilmek zaman ve maliyet a\u00e7\u0131s\u0131ndan olduk\u00e7a verimli olacakt\u0131r.<\/p>\n<\/li>\n<li><em style=\"color: gray;\">2. Talimat<\/em><br \/>\nDocker i\u00e7erisinde uygulamam\u0131za &#8216;\/app&#8217; ad\u0131nda bir klas\u00f6r a\u00e7\u0131yoruz ve i\u00e7erisine giriyoruz.<\/p>\n<\/li>\n<li><em style=\"color: gray;\">3. Talimat<\/em><br \/>\nE\u011fer ki SDK yerine Runtime y\u00fcklemi\u015f olsayd\u0131k bu talimat <code style=\"color:red;\"><em><strong>COPY \/bin\/Release\/netcoreapp3.1\/publish \/app<\/strong><\/em><\/code> \u015feklinde sadece publish dosyalar\u0131n\u0131 kopyalamas\u0131 gerekti\u011fini ifade edecek bi\u00e7imde olacakt\u0131. Lakin burada SDK y\u00fckledi\u011fimizden dolay\u0131 uygulama \u00fczerinde dotnet cli ile i\u015flem yapabilmemiz i\u00e7in bize sadece publish edilmi\u015f dosyalardan ziyade derlenmemi\u015f dosyalarda laz\u0131m olacakt\u0131r. Dolay\u0131s\u0131yla bu talimatta; birinci nokta ile Dockerfile dosyas\u0131n\u0131n bulundu\u011fu dizindeki(yani projenin ana dizini) t\u00fcm dosyalar\u0131, ikinci noktadaki dizine(yani WORKDIR ile olu\u015fturup i\u00e7erisine girdi\u011fimiz \/app dizinine) kopyalamas\u0131n\u0131 s\u00f6ylemi\u015f oluyoruz.<\/p>\n<\/li>\n<li><em style=\"color: gray;\">4. Talimat<\/em><br \/>\nArt\u0131k SDK y\u00fckl\u00fc oldu\u011funda dolay\u0131 RUN komutuyla dotnet cli komutlar\u0131m\u0131z\u0131 \u00e7al\u0131\u015ft\u0131rabiliriz. Dolay\u0131s\u0131yla &#8216;dotnet restore&#8217; komutu e\u015fli\u011finde uygulamay\u0131 tekrar restore ederek t\u00fcm k\u00fct\u00fcphanelerin y\u00fcklenmesini sa\u011fl\u0131yoruz.<\/p>\n<\/li>\n<li><em style=\"color: gray;\">5. Talimat<\/em><br \/>\n\u015eimdide s\u0131ra uygulamay\u0131 publish etmeye geldi. Hat\u0131rlarsan\u0131z e\u011fer 1. ad\u0131mda uygulamay\u0131 publish etmeksizin direkt olarak Dockerfile dosyas\u0131n\u0131n tasarlanmas\u0131ndan ba\u015flam\u0131\u015ft\u0131k. \u0130\u015fte art\u0131k publish&#8217;i bu ad\u0131mda yani Dockerfile i\u00e7erisindeki talimat ile docker seviyesinde ger\u00e7ekle\u015ftirmekteyiz. dotnet cli komutu olan &#8216;dotnet publish&#8217; ile uygulaman\u0131n &#8216;.csproj&#8217; dosyas\u0131n\u0131 publish edece\u011fini bildiriyoruz. Bilmeyenler i\u00e7in s\u00f6ylemekte fayda var ki; Asp.NET Core uygulamalar\u0131ndaki &#8216;.csproj&#8217; uzant\u0131l\u0131 dosya o uygulamaya \u00f6zel t\u00fcm bilgilerle birlikte kullan\u0131ld\u0131\u011f\u0131 k\u00fct\u00fcphanelerin bilgilerinin tutuldu\u011fu \u00f6zel bir dosyad\u0131r. Dolay\u0131s\u0131yla nelerin \u00e7\u0131kt\u0131s\u0131n\u0131 alaca\u011f\u0131m\u0131z konusunda en iyi bilgiyi bize &#8216;.csproj&#8217; dosyas\u0131 vermektedir. O y\u00fczden publish esnas\u0131nda ilgili dosya belirtilmekte ve <span style=\"color:blue\">-c<\/span> parametresi ile release modda \u00e7\u0131kt\u0131 \u00fcretilmesi gerekti\u011fi bildirilmektedir. Ayr\u0131ca <span style=\"color:blue\">-o<\/span> parametresi ile publish dosyalar\u0131n\u0131n, i\u00e7erisinde bulundu\u011fumuz &#8216;\/app&#8217; dizininin i\u00e7erisine olu\u015fturulacak olan &#8216;out&#8217; isminde bir klas\u00f6re at\u0131lmas\u0131 gerekti\u011fini bildirmekteyiz.<\/p>\n<\/li>\n<li><em style=\"color: gray;\">6. Talimat<\/em><br \/>\n5. talimatta publish neticesinde \u00fcretilen \u00e7\u0131kt\u0131lar\u0131 koydu\u011fumuz &#8216;out&#8217; dizinine giriyoruz.<\/p>\n<\/li>\n<li><em style=\"color: gray;\">7. Talimat<\/em><br \/>\nContainer i\u00e7erisinde \u00e7al\u0131\u015ft\u0131r\u0131lan uygulama 5000 portunda aya\u011fa kald\u0131r\u0131lacakt\u0131r. <em>Neden 5000?<\/em> SDK&#8217;da ki environmentta default tan\u0131m\u0131ndan dolay\u0131&#8230; E\u011fer ki Runtime imageinde \u00e7al\u0131\u015f\u0131yor olsayd\u0131k 80 portunda aya\u011fa kalkacakt\u0131. Container\u0131 ba\u015fl\u0131 ba\u015f\u0131na bir i\u015fletim sistemi gibi d\u00fc\u015f\u00fcn\u00fcrsek e\u011fer o i\u015fletim sisteminin localinde a\u00e7\u0131lan bir porta bizlerin d\u0131\u015far\u0131dan eri\u015fememiz kadar do\u011fal bir durum olmasa gerek. Dolay\u0131s\u0131yla bizlerin bu container i\u00e7erisindeki uygulamaya d\u0131\u015far\u0131dan eri\u015febilmemiz i\u00e7in containerdaki localhost&#8217;da \u00e7al\u0131\u015ft\u0131rmamam\u0131z gerekmekte ve bunun i\u00e7in bir IP adresi ayarlamam\u0131z gerekmektedir. <\/p>\n<p>SDK i\u00e7erisindeki environment\u0131n ad\u0131 &#8216;ASPNETCORE_URLS&#8217; d\u0131r. Bu default olarak 5000 \u015feklinde ayarland\u0131\u011f\u0131 i\u00e7in container i\u00e7erisinde 5000 portunda uygulama aya\u011fa kald\u0131r\u0131lmaktad\u0131r. Bizler bu default de\u011feri ezerek 1453 portunda(tabi ki de opsiyonel) aya\u011fa kalkmas\u0131n\u0131 s\u00f6yl\u00fcyoruz.<\/p>\n<\/li>\n<li><em style=\"color: gray;\">8. Talimat<\/em><br \/>\nVe son olarak container\u0131n hangi dll dosyas\u0131n\u0131 \u00e7al\u0131\u015ft\u0131raca\u011f\u0131n\u0131 belirtiyoruz.\n<\/li>\n<\/ul>\n<\/li>\n<li><strong style=\"color:purple;\">Ad\u0131m 3<\/strong> <em style=\"color:green\";>Image olu\u015fturma<\/em><br \/>\n\u015eimdi s\u0131ra tasarlanan bu Dockerfile dosyas\u0131 \u00fczerinden bir image olu\u015fturmaya geldi. Bunun i\u00e7in uygulama dizinini Powershell ya da Komut \u0130stemi uygulamas\u0131yla a\u00e7\u0131n\u0131z ve a\u015fa\u011f\u0131daki komutla build ediniz.<br \/>\n<code style=\"color:red;\"><strong><em>docker build -t webuygulamasi:v1 .<\/em><\/strong><\/code><br \/>\n<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/03\/Asp.NET-Core-Uygulamas\u0131n\u0131-Dockerize-Etmek.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/03\/Asp.NET-Core-Uygulamas\u0131n\u0131-Dockerize-Etmek.jpg\" alt=\"Asp.NET Core Uygulamas\u0131n\u0131 Dockerize Etmek\" width=\"1516\" height=\"728\" class=\"alignnone size-full wp-image-14645\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/03\/Asp.NET-Core-Uygulamas\u0131n\u0131-Dockerize-Etmek.jpg 1516w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/03\/Asp.NET-Core-Uygulamas\u0131n\u0131-Dockerize-Etmek-300x144.jpg 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/03\/Asp.NET-Core-Uygulamas\u0131n\u0131-Dockerize-Etmek-1024x492.jpg 1024w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/03\/Asp.NET-Core-Uygulamas\u0131n\u0131-Dockerize-Etmek-768x369.jpg 768w\" sizes=\"auto, (max-width: 1516px) 100vw, 1516px\" \/><\/a><\/p>\n<p>G\u00f6r\u00fcld\u00fc\u011f\u00fc \u00fczere 8 katmanl\u0131 bir image olu\u015fturulmu\u015ftur.\n<\/li>\n<li><strong style=\"color:purple;\">Ad\u0131m 4<\/strong> <em style=\"color:green\";>Container olu\u015fturma ve aya\u011fa kald\u0131rma<\/em><br \/>\nOlu\u015fturulan image nesnesi \u00fczerinden uygulamam\u0131z\u0131 bar\u0131nd\u0131racak olan bir container olu\u015ftural\u0131m ve bunu aya\u011fa kald\u0131ral\u0131m.<br \/>\n<code style=\"color:red;\"><strong><em>docker run -p 1071:1453 --name cont1  webuygulamasi<\/em><\/strong><\/code><\/p>\n<p>Yukar\u0131daki komutu incelersek e\u011fer <span style=\"color:blue;\">-p<\/span> parametresi ile containerdaki 1453 portunda aya\u011fa kald\u0131r\u0131lan uygulamay\u0131 bizdeki 1071 portuna atayarak eri\u015fim i\u00e7in port ayarlamas\u0131 ger\u00e7ekle\u015ftiriyoruz.<br \/>\n<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/03\/Asp.NET-Core-Uygulamas\u0131n\u0131-Dockerize-Etmek-1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/03\/Asp.NET-Core-Uygulamas\u0131n\u0131-Dockerize-Etmek-1.jpg\" alt=\"Asp.NET Core Uygulamas\u0131n\u0131 Dockerize Etmek\" width=\"1485\" height=\"185\" class=\"alignnone size-full wp-image-14653\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/03\/Asp.NET-Core-Uygulamas\u0131n\u0131-Dockerize-Etmek-1.jpg 1485w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/03\/Asp.NET-Core-Uygulamas\u0131n\u0131-Dockerize-Etmek-1-300x37.jpg 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/03\/Asp.NET-Core-Uygulamas\u0131n\u0131-Dockerize-Etmek-1-1024x128.jpg 1024w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/03\/Asp.NET-Core-Uygulamas\u0131n\u0131-Dockerize-Etmek-1-768x96.jpg 768w\" sizes=\"auto, (max-width: 1485px) 100vw, 1485px\" \/><\/a><\/p>\n<p>Ve bu i\u015flem neticesinde <a href=\"http:\/\/localhost:1071\" rel=\"noopener noreferrer\" target=\"_blank\">localhost:1071<\/a> adresine girdi\u011fimizde container \u00fczerinden aya\u011fa kald\u0131r\u0131lan uygulamam\u0131za belirtti\u011fimiz port \u00fczerinden eri\u015fmi\u015f olaca\u011f\u0131z.<br \/>\n<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/03\/Asp.NET-Core-Uygulamas\u0131n\u0131-Dockerize-Etmek-2.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/03\/Asp.NET-Core-Uygulamas\u0131n\u0131-Dockerize-Etmek-2.jpg\" alt=\"Asp.NET Core Uygulamas\u0131n\u0131 Dockerize Etmek\" width=\"1168\" height=\"328\" class=\"alignnone size-full wp-image-14655\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/03\/Asp.NET-Core-Uygulamas\u0131n\u0131-Dockerize-Etmek-2.jpg 1168w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/03\/Asp.NET-Core-Uygulamas\u0131n\u0131-Dockerize-Etmek-2-300x84.jpg 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/03\/Asp.NET-Core-Uygulamas\u0131n\u0131-Dockerize-Etmek-2-1024x288.jpg 1024w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/03\/Asp.NET-Core-Uygulamas\u0131n\u0131-Dockerize-Etmek-2-768x216.jpg 768w\" sizes=\"auto, (max-width: 1168px) 100vw, 1168px\" \/><\/a>\n<\/li>\n<\/ul>\n<p>Ne kadar g\u00fczel de\u011fil mi? \ud83d\ude42<\/p>\n<p>Nihai olarak; Docker\u0131n, b\u00fcy\u00fck performans ve verimlilikle olduk\u00e7a d\u00fc\u015f\u00fck maliyette uygulamalar\u0131m\u0131z\u0131 sanalla\u015ft\u0131rmam\u0131z\u0131 sa\u011flayan harika bir platform oldu\u011funa \u015fahit 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, .NET Core &#038; Docker yaz\u0131 dizimizin bu i\u00e7eri\u011finde s\u0131ra herhangi bir Asp.NET Core uygulamas\u0131n\u0131n nas\u0131l dockerize edilebildi\u011fini ad\u0131m ad\u0131m incelemeye geldi. Esas\u0131nda yaz\u0131 serisindeki \u00f6nceki makalelerimizde bir uygulaman\u0131n dockerize edilebilmesi i\u00e7in neler yap\u0131lmas\u0131&#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":14313,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3102,2668,2656,2811,2832,2898,3103,3281],"tags":[3338,3336,3337,3335,3334,3300],"class_list":["post-14614","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-asp-net-core","category-asp-net-core-2","category-asp-net-core-2-mvc","category-asp-net-core-2-1","category-asp-net-core-2-2","category-asp-net-core-3-0","category-asp-net-core-3-1","category-docker","tag-asp-net-core-dockerfile","tag-asp-net-core-dockerize","tag-asp-net-core-uygulamasini-docker","tag-asp-net-core-uygulamasini-dockerize-etmek","tag-aspnetcore_urls","tag-dockerize"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/14614","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=14614"}],"version-history":[{"count":40,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/14614\/revisions"}],"predecessor-version":[{"id":14659,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/14614\/revisions\/14659"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media\/14313"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=14614"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=14614"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=14614"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}