{"id":15466,"date":"2020-06-01T11:45:00","date_gmt":"2020-06-01T02:45:00","guid":{"rendered":"https:\/\/voltechno.com\/blog\/?p=15466"},"modified":"2021-09-11T21:16:01","modified_gmt":"2021-09-11T12:16:01","slug":"synology-dockerdjango","status":"publish","type":"post","link":"https:\/\/voltechno.com\/blog\/synology-dockerdjango\/","title":{"rendered":"Synology NAS\u3067Django\u958b\u767a\u74b0\u5883(Django3.0.x+MySQL+Nginx)\u3092\u69cb\u6210\u3059\u308b"},"content":{"rendered":"\n<div class=\"wp-block-group contents_topbold\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<p class=\"no-indent\">Synology NAS\u306eDocker\u3067\u3082Compose\u304c\u52d5\u304f\u306e\u3067\u3001\u4eca\u56de\u306fSynology NAS\u3092\u6d3b\u7528\u3057\u305f\u3088\u308a\u5b9f\u8df5\u7684\u306aWeb\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30b5\u30fc\u30d0\u30fc\u3092\u69cb\u7bc9\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u307e\u3059\u3002Web\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306f\u69d8\u3005\u306a\u7a2e\u985e\u304c\u3042\u308a\u307e\u3059\u304c\u3001\u4eca\u56de\u306fPython\u3067\u5b9f\u88c5\u3055\u308c\u305fDjango\u306eWeb\u30a2\u30d7\u30ea\u30b5\u30fc\u30d0\u30fcDjango3.0.x + MySQL + Nginx\u306e\u958b\u767a\u74b0\u5883\u3092Docker\u30b3\u30f3\u30c6\u30ca\u4e0a\u3067\u69cb\u7bc9\u3057\u3066\u307f\u307e\u3059\u3002<\/p>\n<\/div><\/div>\n\n\n\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u76ee\u6b21<\/p>\n<label for=\"ez-toc-cssicon-toggle-item-69e4349f15723\" class=\"ez-toc-cssicon-toggle-label\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input type=\"checkbox\"  id=\"ez-toc-cssicon-toggle-item-69e4349f15723\"  aria-label=\"Toggle\" \/><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/voltechno.com\/blog\/synology-dockerdjango\/#NAS%E3%81%A7%E6%9C%AC%E7%95%AA%E7%92%B0%E5%A2%83%E3%81%AB%E8%BF%91%E3%81%84Web%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%82%92%E7%AB%8B%E3%81%A6%E3%82%8B\" >NAS\u3067\u672c\u756a\u74b0\u5883\u306b\u8fd1\u3044Web\u30a2\u30d7\u30ea\u30b5\u30fc\u30d0\u30fc\u3092\u7acb\u3066\u308b<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/voltechno.com\/blog\/synology-dockerdjango\/#%E7%92%B0%E5%A2%83%E6%A7%8B%E6%88%90\" >\u74b0\u5883\u69cb\u6210<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/voltechno.com\/blog\/synology-dockerdjango\/#%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E6%A7%8B%E6%88%90\" >\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u69cb\u6210<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/voltechno.com\/blog\/synology-dockerdjango\/#Python%E3%81%AE%E7%92%B0%E5%A2%83%E8%A8%AD%E5%AE%9A\" >Python\u306e\u74b0\u5883\u8a2d\u5b9a<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/voltechno.com\/blog\/synology-dockerdjango\/#Dockerfile\" >Dockerfile<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/voltechno.com\/blog\/synology-dockerdjango\/#requirementstxt\" >requirements.txt<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/voltechno.com\/blog\/synology-dockerdjango\/#Nginx%E3%81%AE%E8%A8%AD%E5%AE%9A\" >Nginx\u306e\u8a2d\u5b9a<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/voltechno.com\/blog\/synology-dockerdjango\/#app_nginxconf\" >app_nginx.conf<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/voltechno.com\/blog\/synology-dockerdjango\/#uwsgi-params\" >uwsgi-params<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/voltechno.com\/blog\/synology-dockerdjango\/#MySQL%E3%81%AE%E8%A8%AD%E5%AE%9A\" >MySQL\u306e\u8a2d\u5b9a<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/voltechno.com\/blog\/synology-dockerdjango\/#sqlinitsql\" >sql\/init.sql<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/voltechno.com\/blog\/synology-dockerdjango\/#docker-composeyml\" >docker-compose.yml<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/voltechno.com\/blog\/synology-dockerdjango\/#Django%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%81%AE%E5%AE%9F%E8%A1%8C\" >Django\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u5b9f\u884c<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/voltechno.com\/blog\/synology-dockerdjango\/#MySQL_%E6%8E%A5%E7%B6%9A%E8%A8%AD%E5%AE%9A%E3%82%92%E8%BF%BD%E8%A8%98\" >MySQL \u63a5\u7d9a\u8a2d\u5b9a\u3092\u8ffd\u8a18<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/voltechno.com\/blog\/synology-dockerdjango\/#%E3%83%9E%E3%82%A4%E3%82%B0%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E5%AE%9F%E8%A1%8C\" >\u30de\u30a4\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u306e\u5b9f\u884c<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/voltechno.com\/blog\/synology-dockerdjango\/#%E7%AE%A1%E7%90%86%E8%80%85%E3%81%AE%E8%A8%AD%E5%AE%9A\" >\u7ba1\u7406\u8005\u306e\u8a2d\u5b9a<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/voltechno.com\/blog\/synology-dockerdjango\/#%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A%E3%82%92%E8%B5%B7%E5%8B%95\" >\u30b3\u30f3\u30c6\u30ca\u3092\u8d77\u52d5<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/voltechno.com\/blog\/synology-dockerdjango\/#%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%81%97%E3%81%A6%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E3%81%8B%E3%82%89%E5%8B%95%E4%BD%9C%E3%82%92%E7%A2%BA%E8%AA%8D\" >\u30a2\u30af\u30bb\u30b9\u3057\u3066\u30d6\u30e9\u30a6\u30b6\u304b\u3089\u52d5\u4f5c\u3092\u78ba\u8a8d<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-19\" href=\"https:\/\/voltechno.com\/blog\/synology-dockerdjango\/#CSS%E9%81%A9%E5%BF%9C\" >CSS\u9069\u5fdc<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"NAS%E3%81%A7%E6%9C%AC%E7%95%AA%E7%92%B0%E5%A2%83%E3%81%AB%E8%BF%91%E3%81%84Web%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%82%92%E7%AB%8B%E3%81%A6%E3%82%8B\"><\/span>NAS\u3067\u672c\u756a\u74b0\u5883\u306b\u8fd1\u3044Web\u30a2\u30d7\u30ea\u30b5\u30fc\u30d0\u30fc\u3092\u7acb\u3066\u308b<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Django\u306b\u306frunserver\u3067\u8d77\u52d5\u3067\u304d\u308bWeb\u30b5\u30fc\u30d0\u30fc\u304c\u4ed8\u5c5e\u3057\u3066\u3044\u307e\u3059\u304c\u3001\u3053\u306e\u958b\u767a\u30b5\u30fc\u30d0\u30fc\u3092\u30d7\u30ed\u30c0\u30af\u30b7\u30e7\u30f3\u74b0\u5883\u3067\u4f7f\u7528\u3059\u308b\u3053\u3068\u306f\u63a8\u5968\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u3080\u3057\u308d\u7d76\u5bfe\u4f7f\u3046\u306a\u3001\u7981\u6b62\u3068\u660e\u8a18\u3055\u308c\u3066\u3044\u307e\u3059\u3002<span id='easy-footnote-1-15466' class='easy-footnote-margin-adjust'><\/span><span class='easy-footnote'><a href='https:\/\/voltechno.com\/blog\/synology-dockerdjango\/#easy-footnote-bottom-1-15466' title='&lt;a href=&quot;https:\/\/docs.djangoproject.com\/ja\/2.2\/intro\/tutorial01\/#the-development-server&quot;&gt;\u306f\u3058\u3081\u3066\u306e Django \u30a2\u30d7\u30ea\u4f5c\u6210\u3001\u305d\u306e 1&lt;\/a&gt;'><sup>1<\/sup><\/a><\/span><\/p>\n\n\n\n<p>\u958b\u767a\u30fb\u691c\u8a3c\u3060\u3051\u306a\u3089Django\u4ed8\u5c5e\u306e\u958b\u767a\u7528\u30b5\u30fc\u30d0\u30fc\u3067\u3082\u554f\u984c\u3042\u308a\u307e\u305b\u3093\u304c\u3001\u5c0f\u898f\u6a21\u958b\u767a\u306e\u5834\u5408\u3001\u30a4\u30f3\u30d5\u30e9\u30a8\u30f3\u30b8\u30cb\u30a2\u306f\u3044\u308b\u3088\u3046\u3067\u3044\u306a\u3044\u3088\u3046\u306a\u3082\u306e\u306a\u306e\u3067\u3001\u521d\u3081\u304b\u3089\u672c\u756a\u74b0\u5883\u306b\u8fd1\u3044\u3088\u3046\u306a\u958b\u767a\u74b0\u5883\u3092\u69cb\u7bc9\u3059\u308c\u3070\u3001\u74b0\u5883\u5dee\u7570\u30c8\u30e9\u30d6\u30eb\u306b\u898b\u821e\u308f\u308c\u308b\u3053\u3068\u306a\u304f\u30e1\u30ea\u30c3\u30c8\u3082\u5927\u304d\u3044\u304f\u306a\u308b\u304b\u306a\u3068\u8003\u3048\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<p>\u5e78\u3044\u3001\u624b\u6301\u3061\u306eSynology NAS\u304cDocker\u306b\u5bfe\u5fdc\u3057\u3066\u3044\u3066\u3001Docker\u306e\u672c\u756a\u74b0\u5883\u3082\u666e\u53ca\u3057\u3064\u3064\u3042\u308b\u3068\u306e\u8a71\u306a\u306e\u3067<span id='easy-footnote-2-15466' class='easy-footnote-margin-adjust'><\/span><span class='easy-footnote'><a href='https:\/\/voltechno.com\/blog\/synology-dockerdjango\/#easy-footnote-bottom-2-15466' title='&lt;a href=&quot;https:\/\/www.publickey1.jp\/blog\/20\/docker142idc_japan.html&quot;&gt;Docker\u30b3\u30f3\u30c6\u30ca\u3092\u672c\u756a\u74b0\u5883\u3067\u4f7f\u7528\u3057\u3066\u3044\u308b\u56fd\u5185\u4f01\u696d\u306f14.2\uff05\u3002\u300c\u5e74\u5185\u306b\u30ad\u30e3\u30ba\u30e0\u3092\u8d85\u3048\u308b\u3053\u3068\u306f\u78ba\u5b9f\u300d\u3068\u3001IDC Japan&lt;\/a&gt;'><sup>2<\/sup><\/a><\/span>\u3001\u516c\u5f0f\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u53c2\u8003\u306bDocker\u74b0\u5883\u3067Django3.0\u7cfb\u306eWeb\u30a2\u30d7\u30ea\u30b5\u30fc\u30d0\u30fc\u306e\u69cb\u7bc9\u65b9\u6cd5\u3092\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E7%92%B0%E5%A2%83%E6%A7%8B%E6%88%90\"><\/span>\u74b0\u5883\u69cb\u6210<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u4eca\u56de\u4f7f\u7528\u3059\u308b\u74b0\u5883\u306f\u4ee5\u4e0b\u306e\u8868\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002Synology NAS\u4e0a\u3067\u69cb\u6210\u3057\u3066\u3044\u308b\u306e\u304c\u5c11\u3057\u7279\u6b8a\u3067\u3059\u304c\u3001Linux\u74b0\u5883\u307f\u305f\u3044\u306a\u3082\u306e\u306a\u306e\u3067\u4ed6\u306e\u74b0\u5883\u3067\u3082\u5927\u304d\u306a\u5dee\u306f\u306a\u3044\u3068\u601d\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<p>Django\u306f2.2\u4ee5\u964d\u306b\u306a\u308b\u3068\u30de\u30a4\u30b0\u30ec\u6642\u306bpymysql\u3092\u7406\u7531\u306b\u62d2\u5426\u3055\u308c\u3066\u3057\u307e\u3046\u306e\u3067\u3001\u65b0\u305f\u306a\u63a8\u5968\u30c9\u30e9\u30a4\u30d0\u306emysqlclient\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-regular\"><table><tbody><tr><td>\u9805\u76ee<\/td><td>Version<\/td><\/tr><tr><td>Synology DS916+<\/td><td>DSM 6.2.2-24922 Update4<\/td><\/tr><tr><td>Docker<\/td><td>18.09.8<\/td><\/tr><tr><td>Docker-Compose<\/td><td>1.24.0<\/td><\/tr><tr><td>Python<\/td><td>3.8.3<\/td><\/tr><tr><td><span style=\"color:#0693e3\" class=\"tadv-color\">Django<\/span><\/td><td><span style=\"color:#0693e3\" class=\"tadv-color\">3.0.6<\/span><\/td><\/tr><tr><td>MySQL<\/td><td>5.7<\/td><\/tr><tr><td>Nginx<\/td><td>1.18<\/td><\/tr><tr><td>uWSGI<\/td><td>2.0.17<\/td><\/tr><tr><td><span style=\"color:#0693e3\" class=\"tadv-color\">mysqlclient<\/span><\/td><td><span style=\"color:#0693e3\" class=\"tadv-color\">1.4.6<\/span><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E6%A7%8B%E6%88%90\"><\/span>\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u69cb\u6210<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"590\" height=\"355\" src=\"https:\/\/voltechno.com\/blog\/wp-content\/uploads\/2020\/05\/synology-dockerdjango001-590x355.jpg\" alt=\"\" class=\"wp-image-15486\" srcset=\"https:\/\/voltechno.com\/blog\/wp-content\/uploads\/2020\/05\/synology-dockerdjango001-590x355.jpg 590w, https:\/\/voltechno.com\/blog\/wp-content\/uploads\/2020\/05\/synology-dockerdjango001-350x211.jpg 350w, https:\/\/voltechno.com\/blog\/wp-content\/uploads\/2020\/05\/synology-dockerdjango001-768x462.jpg 768w, https:\/\/voltechno.com\/blog\/wp-content\/uploads\/2020\/05\/synology-dockerdjango001-450x271.jpg 450w, https:\/\/voltechno.com\/blog\/wp-content\/uploads\/2020\/05\/synology-dockerdjango001-900x541.jpg 900w, https:\/\/voltechno.com\/blog\/wp-content\/uploads\/2020\/05\/synology-dockerdjango001.jpg 1177w\" sizes=\"auto, (max-width: 590px) 100vw, 590px\" \/><\/figure><\/div>\n\n\n\n<p>3\u5c64\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u306b\u3059\u308b\u306e\u3067\u3001Python\u30fbNginx\u30fbMySQL\u3067\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u5206\u3051\u307e\u3059\u3002\u4eca\u56de\u306fSynology NAS\u3067\u69cb\u7bc9\u3057\u3066\u3044\u308b\u306e\u3067\u3001DSM\u4e0a\u3067\u30d1\u30d1\u3063\u3068\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u4f5c\u3063\u3066\u3057\u307e\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>django\n\u251c\u2500\u2500 docker-compose.yml\n\u251c\u2500\u2500 mysql\n\u251c\u2500\u2500 sql\n\u251c\u2500\u2500 nginx\n\u2502   \u251c\u2500\u2500 conf\n\u2502   \u2502   \u2514\u2500\u2500 app_nginx.conf\n\u2502   \u2514\u2500\u2500 uwsgi_params\n\u2514\u2500\u2500 python\n    \u251c\u2500\u2500 Dockerfile\n    \u2514\u2500\u2500 requirements.txt<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Python%E3%81%AE%E7%92%B0%E5%A2%83%E8%A8%AD%E5%AE%9A\"><\/span>Python\u306e\u74b0\u5883\u8a2d\u5b9a<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Dockerfile\"><\/span>Dockerfile<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>FROM python:3.8.3\nENV PYTHONUNBUFFERED 1\nRUN mkdir \/code\/\nWORKDIR \/code\/\nADD requirements.txt \/code\nRUN pip install -r requirements.txt\nADD . \/code<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"requirementstxt\"><\/span>requirements.txt<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>Django==3.0.6\nuwsgi==2.0.17\nmysqlclient==1.4.6\ndjango-bootstrap4==1.1.1\npytz==2019.3\nsoupsieve==1.9.5\nsqlparse==0.3.0\nasgiref==3.2.3\nbeautifulsoup4==4.8.2<\/code><\/pre>\n\n\n\n<p>Django2.2\u4ee5\u964d\u3067\u306fMySQL\u30c9\u30e9\u30a4\u30d0\u30fc\u306b<strong>mysqlclient<\/strong>\u3092\u5fc5\u8981\u3068\u3057\u307e\u3059\u3002Django2.1\u4ee5\u524d\u307e\u3067\u5bfe\u5fdc\u3057\u3066\u3044\u305fpymysql\u3092\u4f7f\u304a\u3046\u3068\u3059\u308b\u3068\u30de\u30a4\u30b0\u30ec\u6642\u306b<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.<\/code><\/pre>\n\n\n\n<p>\u30a8\u30e9\u30fc\u304c\u8868\u793a\u3055\u308c\u3066Django\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u4f5c\u6210\u304c\u9032\u307e\u306a\u3044\u306e\u3067\u300cmysqlclient==1.4.6\u300d\u306b\u5909\u66f4\u3057\u307e\u3059\u3002mysqlclient\u4ee5\u4e0b\u306b\u306fDjango\u30a2\u30d7\u30ea\u30b5\u30fc\u30d0\u30fc\u306b\u5fc5\u8981\u306a\u3082\u306e\u4ee5\u5916\u306b\u3082\u3044\u308d\u3044\u308d\u5165\u3063\u3066\u3044\u307e\u3059\u304c\u3001\u7528\u9014\u306b\u5408\u308f\u305b\u3066\u304a\u597d\u307f\u3067\u524a\u9664\u30fb\u8ffd\u52a0\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Nginx%E3%81%AE%E8%A8%AD%E5%AE%9A\"><\/span>Nginx\u306e\u8a2d\u5b9a<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"app_nginxconf\"><\/span>app_nginx.conf<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Nginx\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002uwsgi\u306e\u8a2d\u5b9a\u3084\u30dd\u30fc\u30c8\u8a2d\u5b9a\u30fb\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u306e\u5bb9\u91cf\u5236\u9650\u306a\u3069\u306f\u3053\u3053\u3067\u5b9a\u7fa9\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u975e\u8868\u793a\u306b\u3059\u308b\u305f\u3081.conf\u306ehttp\u30c7\u30a3\u30ec\u30af\u30c6\u30a3\u30d6\u306b server_tokens off; \u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002\u305d\u306e\u4ed6\u306b\u3082\u3001\u672c\u756a\u74b0\u5883\u306b\u4f7f\u7528\u3059\u308b\u5834\u5408\u306b\u306f\u672c\u756a\u7528\u306e.conf\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002\u4eca\u56de\u306f\u958b\u767a\u7528\u306a\u306e\u3067\u7c21\u5358\u306b\u5b9a\u7fa9<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>upstream django {\n    ip_hash;\n    server python:8001;\n}\n\nserver {\n    listen      8000;\n    server_name 127.0.0.1;\n    charset     utf-8;\n\n    location \/static {\n        alias \/static;\n    }\n\n    location \/ {\n        uwsgi_pass  django;\n        include     \/etc\/nginx\/uwsgi_params;\n    }\n}\n\nserver_tokens off;<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"uwsgi-params\"><\/span>uwsgi-params<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>nginx\u306euWSGI\u30e2\u30b8\u30e5\u30fc\u30eb\u7528\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3067\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>uwsgi_param  QUERY_STRING       $query_string;\nuwsgi_param  REQUEST_METHOD     $request_method;\nuwsgi_param  CONTENT_TYPE       $content_type;\nuwsgi_param  CONTENT_LENGTH     $content_length;\n\nuwsgi_param  REQUEST_URI        $request_uri;\nuwsgi_param  PATH_INFO          $document_uri;\nuwsgi_param  DOCUMENT_ROOT      $document_root;\nuwsgi_param  SERVER_PROTOCOL    $server_protocol;\nuwsgi_param  REQUEST_SCHEME     $scheme;\nuwsgi_param  HTTPS              $https if_not_empty;\n\nuwsgi_param  REMOTE_ADDR        $remote_addr;\nuwsgi_param  REMOTE_PORT        $remote_port;\nuwsgi_param  SERVER_PORT        $server_port;\nuwsgi_param  SERVER_NAME        $server_name;<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"MySQL%E3%81%AE%E8%A8%AD%E5%AE%9A\"><\/span>MySQL\u306e\u8a2d\u5b9a<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"sqlinitsql\"><\/span>sql\/init.sql<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>django\u3067test\u3092\u5b9f\u884c\u3059\u308b\u969b\u306bDB\u4f5c\u6210\u3092\u8a31\u53ef\u3059\u308b\u305f\u3081\u3001\u4ee5\u4e0b\u3092\u8a18\u8ff0\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>GRANT ALL PRIVILEGES ON test_todoList.* TO 'user'@'%';\n\nFLUSH PRIVILEGES;<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"docker-composeyml\"><\/span>docker-compose.yml<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u305d\u308c\u305e\u308c\u306e\u30b3\u30f3\u30d5\u30a3\u30b0\u30d5\u30a1\u30a4\u30eb\u304c\u4f5c\u6210\u51fa\u6765\u305f\u3089Compose\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u3066\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u30c8\u30c3\u30d7\u306b\u5165\u308c\u3066\u304a\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u4f7f\u7528\u3059\u308b\u30dd\u30fc\u30c8\u3092\u5909\u66f4\u3059\u308b\u5834\u5408\u306fDocker compose\u306e\u30dd\u30fc\u30c8\u5b9a\u7fa9\u306e\u307b\u304b\u3001\u5404\u30b3\u30f3\u30c6\u30ca\u306e\u30b3\u30f3\u30d5\u30a3\u30b0\u30d5\u30a1\u30a4\u30eb\u306e\u30dd\u30fc\u30c8\u8a2d\u5b9a\u3082\u5909\u66f4\u3057\u306a\u3051\u308c\u3070\u306a\u3089\u306a\u3044\u306e\u3067\u6ce8\u610f\u3067\u3059\u3002<\/p>\n\n\n\n<script src=\"https:\/\/gist.github.com\/aaattthhhh\/fdc610ea1e3dcc95c2fe84e202fe4f97.js\"><\/script>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Django%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%81%AE%E5%AE%9F%E8%A1%8C\"><\/span>Django\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u5b9f\u884c<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code># docker-compose run python django-admin.py startproject app .<\/code><\/pre>\n\n\n\n<p>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u5b9f\u884c\u3059\u308b\u3068\u3044\u304f\u3064\u304b\u306e\u30d5\u30a1\u30a4\u30eb\u3068\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u304c\u4f5c\u6210\u3055\u308c\u3066\u3001\u4e0b\u8a18\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u69cb\u6210\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>django\n\u251c\u2500\u2500 docker-compose.yml\n\u251c\u2500\u2500 mysql\n\u251c\u2500\u2500 sql\n\u251c\u2500\u2500 nginx\n\u2502   \u251c\u2500\u2500 conf\n\u2502   \u2502   \u2514\u2500\u2500 app_nginx.conf\n\u2502   \u2514\u2500\u2500 uwsgi_params\n\u251c\u2500\u2500 python\n\u2502   \u251c\u2500\u2500 Dockerfile\n\u2502   \u2514\u2500\u2500 requirements.txt\n\u251c\u2500\u2500 src\n\u2502   \u251c\u2500\u2500 app\n\u2502   \u2502   \u251c\u2500\u2500 __init__.py\n\u2502   \u2502   \u251c\u2500\u2500 settings.py\n\u2502   \u2502   \u251c\u2500\u2500 urls.py\n\u2502   \u2502   \u2514\u2500\u2500 wsgi.py\n\u2502   \u2514\u2500\u2500 manage.py\n\u2514\u2500\u2500 static<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"MySQL_%E6%8E%A5%E7%B6%9A%E8%A8%AD%E5%AE%9A%E3%82%92%E8%BF%BD%E8%A8%98\"><\/span>MySQL \u63a5\u7d9a\u8a2d\u5b9a\u3092\u8ffd\u8a18<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p><span style=\"background-color:#eeeeee\" class=\"tadv-background-color\">settings.py<\/span><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DATABASES = {\n    'default': {\n        'ENGINE': 'django.db.backends.mysql',\n        'NAME': 'todoList',\n        'USER': 'user',\n        'PASSWORD': 'password',\n        'HOST': 'db',\n        'PORT': '3306',\n    }\n}<\/code><\/pre>\n\n\n\n<p>\u3064\u3044\u3067\u306b\u65e5\u672c\u8a9e\u5316\u3068\u30bf\u30a4\u30e0\u30be\u30fc\u30f3\u306e\u8a2d\u5b9a\u30fb\u30c7\u30d0\u30c3\u30b0\u30e2\u30fc\u30c9\u306e\u51e6\u7406\u3082\u66f8\u304d\u52a0\u3048\u3066\u304a\u304d\u307e\u3059<\/p>\n\n\n\n<p><span style=\"background-color:#eeeeee\" class=\"tadv-background-color\">settings.py<\/span><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ALLOWED_HOSTS = &#091;'\u30b5\u30fc\u30d0\u30fc\u306eIP\u30a2\u30c9\u30ec\u30b9']<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>LANGUAGE_CODE = 'ja'\n\nTIME_ZONE = 'Asia\/Tokyo'<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E3%83%9E%E3%82%A4%E3%82%B0%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E5%AE%9F%E8%A1%8C\"><\/span>\u30de\u30a4\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u306e\u5b9f\u884c<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>\u30de\u30a4\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002\u3053\u306e\u6642\u3001\u69cb\u6210\u3057\u305f\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3084\u30d5\u30a1\u30a4\u30eb\u306b\u4e0d\u5099\u304c\u3042\u308b\u3068\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker-compose run python .\/manage.py makemigrations\ndocker-compose run python .\/manage.py migrate<\/code><\/pre>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"590\" height=\"362\" src=\"https:\/\/voltechno.com\/blog\/wp-content\/uploads\/2020\/05\/synology-dockerdjango003-590x362.jpg\" alt=\"\" class=\"wp-image-15489\" srcset=\"https:\/\/voltechno.com\/blog\/wp-content\/uploads\/2020\/05\/synology-dockerdjango003-590x362.jpg 590w, https:\/\/voltechno.com\/blog\/wp-content\/uploads\/2020\/05\/synology-dockerdjango003-350x215.jpg 350w, https:\/\/voltechno.com\/blog\/wp-content\/uploads\/2020\/05\/synology-dockerdjango003-768x471.jpg 768w, https:\/\/voltechno.com\/blog\/wp-content\/uploads\/2020\/05\/synology-dockerdjango003-250x154.jpg 250w, https:\/\/voltechno.com\/blog\/wp-content\/uploads\/2020\/05\/synology-dockerdjango003-500x308.jpg 500w, https:\/\/voltechno.com\/blog\/wp-content\/uploads\/2020\/05\/synology-dockerdjango003-450x276.jpg 450w, https:\/\/voltechno.com\/blog\/wp-content\/uploads\/2020\/05\/synology-dockerdjango003-900x552.jpg 900w, https:\/\/voltechno.com\/blog\/wp-content\/uploads\/2020\/05\/synology-dockerdjango003.jpg 922w\" sizes=\"auto, (max-width: 590px) 100vw, 590px\" \/><\/figure><\/div>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E7%AE%A1%E7%90%86%E8%80%85%E3%81%AE%E8%A8%AD%E5%AE%9A\"><\/span>\u7ba1\u7406\u8005\u306e\u8a2d\u5b9a<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Django\u306e\u7ba1\u7406\u753b\u9762\u306b\u30ed\u30b0\u30a4\u30f3\u3059\u308b\u305f\u3081\u306e\u30e6\u30fc\u30b6\u30fc\u8a2d\u5b9a\u3092\u884c\u3044\u307e\u3059\u3002\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u3084\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5165\u529b\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker-compose run python .\/manage.py createsuperuser<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A%E3%82%92%E8%B5%B7%E5%8B%95\"><\/span>\u30b3\u30f3\u30c6\u30ca\u3092\u8d77\u52d5<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>docker-compose up -d<\/code><\/pre>\n\n\n\n<p>\u3053\u3053\u3067\u521d\u3081\u3066Nginx\u3068Python\u30b3\u30f3\u30c6\u30ca\u304c\u8d77\u52d5\u3057\u307e\u3059\u3002\u6b63\u5e38\u306b\u8d77\u52d5\u3059\u308b\u306e\u3092\u78ba\u8a8d\u3067\u304d\u305f\u3089\u3001\u30de\u30a4\u30b0\u30ec\u7528\u306b\u69cb\u6210\u3055\u308c\u305fPython\u30b3\u30f3\u30c6\u30ca\u306f\u524a\u9664\u3057\u3066OK\u3067\u3059\u3002<\/p>\n\n\n\n<p>\u305d\u306e\u307e\u307e\u653e\u7f6e\u3057\u3066\u3082\u554f\u984c\u3042\u308a\u307e\u305b\u3093\u304c\u3001Synology Docker\u306e\u5834\u5408\u306f\u5927\u91cf\u306b\u69cb\u6210\u3055\u308c\u308b\u30b3\u30f3\u30c6\u30ca\u304cGUI\u4e0a\u306e\u7ba1\u7406\u306e\u90aa\u9b54\u306b\u306a\u308b\u306e\u3067\u6d88\u3057\u3066\u3057\u307e\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"590\" height=\"315\" src=\"https:\/\/voltechno.com\/blog\/wp-content\/uploads\/2020\/05\/synology-dockerdjango007-590x315.jpg\" alt=\"\" class=\"wp-image-15488\" srcset=\"https:\/\/voltechno.com\/blog\/wp-content\/uploads\/2020\/05\/synology-dockerdjango007-590x315.jpg 590w, https:\/\/voltechno.com\/blog\/wp-content\/uploads\/2020\/05\/synology-dockerdjango007-350x187.jpg 350w, https:\/\/voltechno.com\/blog\/wp-content\/uploads\/2020\/05\/synology-dockerdjango007-768x410.jpg 768w, https:\/\/voltechno.com\/blog\/wp-content\/uploads\/2020\/05\/synology-dockerdjango007-450x240.jpg 450w, https:\/\/voltechno.com\/blog\/wp-content\/uploads\/2020\/05\/synology-dockerdjango007-900x481.jpg 900w, https:\/\/voltechno.com\/blog\/wp-content\/uploads\/2020\/05\/synology-dockerdjango007.jpg 1320w\" sizes=\"auto, (max-width: 590px) 100vw, 590px\" \/><\/figure><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%81%97%E3%81%A6%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E3%81%8B%E3%82%89%E5%8B%95%E4%BD%9C%E3%82%92%E7%A2%BA%E8%AA%8D\"><\/span>\u30a2\u30af\u30bb\u30b9\u3057\u3066\u30d6\u30e9\u30a6\u30b6\u304b\u3089\u52d5\u4f5c\u3092\u78ba\u8a8d<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p><span style=\"background-color:#eeeeee\" class=\"tadv-background-color\">http:\/\/\u30db\u30b9\u30c8\u306eIP\u30a2\u30c9\u30ec\u30b9:8000<\/span>\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3066\u3001\u4e0b\u8a18\u306e\u753b\u9762\u304c\u8868\u793a\u3055\u308c\u308c\u3070OK\u3067\u3059\u3002<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"590\" height=\"336\" src=\"https:\/\/voltechno.com\/blog\/wp-content\/uploads\/2020\/05\/synology-dockerdjango002-590x336.jpg\" alt=\"\" class=\"wp-image-15487\" srcset=\"https:\/\/voltechno.com\/blog\/wp-content\/uploads\/2020\/05\/synology-dockerdjango002-590x336.jpg 590w, https:\/\/voltechno.com\/blog\/wp-content\/uploads\/2020\/05\/synology-dockerdjango002-350x199.jpg 350w, https:\/\/voltechno.com\/blog\/wp-content\/uploads\/2020\/05\/synology-dockerdjango002-768x437.jpg 768w, https:\/\/voltechno.com\/blog\/wp-content\/uploads\/2020\/05\/synology-dockerdjango002-450x256.jpg 450w, https:\/\/voltechno.com\/blog\/wp-content\/uploads\/2020\/05\/synology-dockerdjango002-900x512.jpg 900w, https:\/\/voltechno.com\/blog\/wp-content\/uploads\/2020\/05\/synology-dockerdjango002.jpg 1225w\" sizes=\"auto, (max-width: 590px) 100vw, 590px\" \/><\/figure><\/div>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"CSS%E9%81%A9%E5%BF%9C\"><\/span>CSS\u9069\u5fdc<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Django\u7ba1\u7406\u753b\u9762\u306b\u30ed\u30b0\u30a4\u30f3\u3059\u308b\u3068CSS\u304c\u9069\u5fdc\u3055\u308c\u3066\u3044\u306a\u3044\u306e\u3067\u3001\u9759\u7684\u30d5\u30a1\u30a4\u30eb\u3092\u8aad\u307f\u8fbc\u3080\u3088\u3046settings.py\u306b\u5b9a\u7fa9\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p><span style=\"background-color:#eeeeee\" class=\"tadv-background-color\">settings.py<\/span><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>STATIC_URL = '\/static\/'\nSTATIC_ROOT = '\/static'<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code># docker-compose run python .\/manage.py collectstatic<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">\u53c2\u8003<\/h4>\n\n\n\n<ul class=\"wp-block-list\"><li><a rel=\"noreferrer noopener\" href=\"https:\/\/docs.docker.com\/compose\/django\/#create-a-django-project\" target=\"_blank\">Quickstart: Compose and Django | Docker Documentation<\/a><\/li><li><a href=\"https:\/\/nmmmk.hatenablog.com\/entry\/2018\/05\/01\/101126\">Docker-Compose\u3067\u4f5c\u308bDjango\u958b\u767a\u74b0\u5883(Django + MySQL + uWSGI + Nginx)<\/a><\/li><li><a href=\"https:\/\/qiita.com\/kenkono\/items\/6221ad12670d1ae8b1dd\">Django+Nginx+MySQL\u306e\u958b\u767a\u74b0\u5883\u3092Docker\u3067\u69cb\u7bc9\u3059\u308b\uff5cQiita<\/a><\/li><\/ul>\n\n\n","protected":false},"excerpt":{"rendered":"<p>Nginx\uff08\u30a8\u30f3\u30b8\u30f3\u30a8\u30c3\u30af\u30b9\uff09+MySQL\u304b\u3089Python\u306eWeb\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306eDjango\u3092\u52d5\u304b\u3059\u65b9\u6cd5\u3092\u89e3\u8aac\u3057\u307e\u3059\u3002Django3.0\u3092\u4f7f\u7528\u3059\u308b\u6ce8\u610f\u70b9\u3084Docker\u4e0a\u3067\u306e\u69cb\u6210\u65b9\u6cd5\u306a\u3069\u3002<\/p>","protected":false},"author":1,"featured_media":15491,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[642],"tags":[187,656,758,759,924],"class_list":{"0":"post-15466","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-network-gadgetweb","8":"tag-nas","9":"tag-docker","10":"tag-python","11":"tag-django","12":"tag-synology-nas"},"wps_subtitle":"","_links":{"self":[{"href":"https:\/\/voltechno.com\/blog\/wp-json\/wp\/v2\/posts\/15466","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/voltechno.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/voltechno.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/voltechno.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/voltechno.com\/blog\/wp-json\/wp\/v2\/comments?post=15466"}],"version-history":[{"count":14,"href":"https:\/\/voltechno.com\/blog\/wp-json\/wp\/v2\/posts\/15466\/revisions"}],"predecessor-version":[{"id":16326,"href":"https:\/\/voltechno.com\/blog\/wp-json\/wp\/v2\/posts\/15466\/revisions\/16326"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/voltechno.com\/blog\/wp-json\/wp\/v2\/media\/15491"}],"wp:attachment":[{"href":"https:\/\/voltechno.com\/blog\/wp-json\/wp\/v2\/media?parent=15466"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/voltechno.com\/blog\/wp-json\/wp\/v2\/categories?post=15466"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/voltechno.com\/blog\/wp-json\/wp\/v2\/tags?post=15466"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}