{"id":7059,"date":"2026-09-21T17:00:42","date_gmt":"2026-09-21T13:30:42","guid":{"rendered":"https:\/\/parmin.cloud\/blog\/?p=7059"},"modified":"2026-09-21T17:00:42","modified_gmt":"2026-09-21T13:30:42","slug":"%d9%86%d8%ad%d9%88%d9%87-%d9%86%d8%b5%d8%a8-%d9%88%d8%b1%d8%af%d9%be%d8%b1%d8%b3-%d8%a8%d8%a7-docker-compose","status":"publish","type":"post","link":"https:\/\/parmin.cloud\/blog\/%d9%86%d8%ad%d9%88%d9%87-%d9%86%d8%b5%d8%a8-%d9%88%d8%b1%d8%af%d9%be%d8%b1%d8%b3-%d8%a8%d8%a7-docker-compose\/","title":{"rendered":"\u0646\u062d\u0648\u0647 \u0646\u0635\u0628 \u0648\u0631\u062f\u067e\u0631\u0633 \u0628\u0627 Docker Compose"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">\u0645\u0642\u062f\u0645\u0647<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0631\u062f\u067e\u0631\u0633 \u06cc\u06a9 \u0633\u06cc\u0633\u062a\u0645 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u062d\u062a\u0648\u0627\u06cc (CMS) \u0631\u0627\u06cc\u06af\u0627\u0646 \u0648 \u0645\u062a\u0646-\u0628\u0627\u0632 \u0627\u0633\u062a \u06a9\u0647 \u0631\u0648\u06cc \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 MySQL \u0628\u0627 \u067e\u0631\u062f\u0627\u0632\u0634 PHP \u0628\u0646\u0627 \u0634\u062f\u0647. \u0628\u0647\u200c\u062f\u0644\u06cc\u0644 \u0645\u0639\u0645\u0627\u0631\u06cc \u067e\u0644\u0627\u06af\u06cc\u0646\u0650 \u062a\u0648\u0633\u0639\u0647\u200c\u067e\u0630\u06cc\u0631 \u0648 \u0633\u06cc\u0633\u062a\u0645 \u0642\u0627\u0644\u0628\u200c\u0633\u0627\u0632\u06cc\u200c\u0627\u0634\u060c \u0628\u06cc\u0634\u062a\u0631 \u0645\u062f\u06cc\u0631\u06cc\u062a\u0634 \u0631\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0631\u0627\u0628\u0637 \u0648\u0628 \u0627\u0646\u062c\u0627\u0645 \u062f\u0627\u062f. \u0627\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u0645\u062d\u0628\u0648\u0628\u064a\u062a \u0648\u0631\u062f\u067e\u0631\u0633 \u0647\u0646\u06af\u0627\u0645 \u0633\u0627\u062e\u062a \u0627\u0646\u0648\u0627\u0639 \u0645\u062e\u062a\u0644\u0641 \u0648\u0628\u200c\u0633\u0627\u06cc\u062a\u200c\u0647\u0627\u0633\u062a\u2014\u0627\u0632 \u0628\u0644\u0627\u06af \u062a\u0627 \u0635\u0641\u062d\u0627\u062a \u0645\u062d\u0635\u0648\u0644 \u062a\u0627 \u0633\u0627\u06cc\u062a\u200c\u0647\u0627\u06cc \u0641\u0631\u0648\u0634\u06af\u0627\u0647\u06cc.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u062c\u0631\u0627\u06cc \u0648\u0631\u062f\u067e\u0631\u0633 \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0634\u0627\u0645\u0644 \u0646\u0635\u0628 \u0627\u0633\u062a\u06a9 LAMP (\u0644\u06cc\u0646\u0648\u06a9\u0633\u060c Apache\u060c MySQL \u0648 PHP) \u06cc\u0627 LEMP (\u0644\u06cc\u0646\u0648\u06a9\u0633\u060c Nginx\u060c MySQL \u0648 PHP) \u0627\u0633\u062a\u061b \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0632\u0645\u0627\u0646\u200c\u0628\u0631 \u0628\u0627\u0634\u062f. \u0627\u0645\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc\u06cc \u0645\u062b\u0644 \u062f\u0627\u06a9\u0631 \u0648 Docker Compose\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0641\u0631\u0627\u06cc\u0646\u062f \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0627\u0633\u062a\u06a9 \u0645\u0648\u0631\u062f \u0639\u0644\u0627\u0642\u0647 \u0648 \u0646\u0635\u0628 \u0648\u0631\u062f\u067e\u0631\u0633 \u0631\u0627 \u0633\u0627\u062f\u0647\u200c\u062a\u0631 \u06a9\u0646\u06cc\u062f. \u0628\u0647\u200c\u062c\u0627\u06cc \u0646\u0635\u0628 \u062f\u0633\u062a\u06cc \u0627\u062c\u0632\u0627\u06cc \u0645\u0646\u0641\u0631\u062f\u060c \u0627\u0632 Image\u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f\u2014\u06a9\u0647 \u0686\u06cc\u0632\u0647\u0627\u06cc\u06cc \u0645\u062b\u0644 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647\u200c\u0647\u0627\u060c \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0648 \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0645\u062d\u06cc\u0637\u06cc \u0631\u0627 \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f. \u0633\u067e\u0633 \u0627\u06cc\u0646 Image\u0647\u0627 \u0631\u0627 \u062f\u0631 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u2014\u067e\u0631\u0648\u0633\u0647\u200c\u0647\u0627\u06cc \u0627\u06cc\u0632\u0648\u0644\u0647\u200c\u0627\u06cc \u06a9\u0647 \u0631\u0648\u06cc \u0633\u06cc\u0633\u062a\u0645\u200c\u0639\u0627\u0645\u0644 \u0645\u0634\u062a\u0631\u06a9 \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f\u2014\u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f. \u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u0627\u06cc\u0646\u060c \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Compose \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0686\u0646\u062f \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0631\u0627\u2014\u0645\u062b\u0644\u0627\u064b \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0648 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633\u2014\u0647\u0645\u0627\u0647\u0646\u06af \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0628\u0627 \u0647\u0645 \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0631\u0642\u0631\u0627\u0631 \u06a9\u0646\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0627\u06cc\u0646 tutorial\u060c \u0646\u0635\u0628 \u0686\u0646\u062f\u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u06cc\u0650 \u0648\u0631\u062f\u067e\u0631\u0633 \u0645\u06cc\u200c\u0633\u0627\u0632\u06cc\u062f. \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc \u0634\u0645\u0627 \u0634\u0627\u0645\u0644 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 MySQL\u060c \u0648\u0628\u200c\u0633\u0631\u0648\u0631 Nginx \u0648 \u062e\u0648\u062f \u0648\u0631\u062f\u067e\u0631\u0633 \u062e\u0648\u0627\u0647\u0646\u062f \u0628\u0648\u062f. \u0647\u0645\u200c\u0686\u0646\u06cc\u0646 \u0646\u0635\u0628\u200c\u062a\u0627\u0646 \u0631\u0627 \u0628\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u06af\u0648\u0627\u0647\u06cc\u200c\u0647\u0627\u06cc TLS\/SSL \u0627\u0632 Let&#8217;s Encrypt \u0628\u0631\u0627\u06cc \u062f\u0627\u0645\u0646\u0647\u200c\u0627\u06cc \u06a9\u0647 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u062f \u0628\u0627 \u0633\u0627\u06cc\u062a\u200c\u062a\u0627\u0646 \u0645\u0631\u062a\u0628\u0637 \u0628\u0627\u0634\u062f\u060c \u0627\u0645\u0646 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f. \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a\u060c Cron Job\u0627\u06cc \u0631\u0627\u0647 \u0645\u06cc\u200c\u0627\u0646\u062f\u0627\u0632\u06cc\u062f \u062a\u0627 \u06af\u0648\u0627\u0647\u06cc\u200c\u0647\u0627\u06cc\u200c\u062a\u0627\u0646 \u0631\u0627 \u062a\u0645\u062f\u06cc\u062f \u06a9\u0646\u062f \u062a\u0627 \u062f\u0627\u0645\u0646\u0647\u200c\u062a\u0627\u0646 \u0627\u0645\u0646 \u0628\u0645\u0627\u0646\u062f.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u0646\u06a9\u0627\u062a \u06a9\u0644\u06cc\u062f\u06cc<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Docker Compose \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0648\u0631\u062f\u067e\u0631\u0633 \u0631\u0627 \u0633\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f<\/strong> \u0628\u0627 \u062d\u0630\u0641 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u0646\u0635\u0628 \u062f\u0633\u062a\u06cc \u0627\u062c\u0632\u0627\u06cc \u0627\u0633\u062a\u06a9 LAMP\/LEMP. \u0628\u0647\u200c\u062c\u0627\u06cc\u0634\u060c \u0627\u0632 Image\u0647\u0627\u06cc \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f \u06a9\u0647 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647\u200c\u0647\u0627\u060c \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc\u200c\u0647\u0627 \u0648 \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0645\u062d\u06cc\u0637\u06cc \u0631\u0627 \u062f\u0631 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc \u0627\u06cc\u0632\u0648\u0644\u0647 \u0628\u0627\u0646\u062f\u0644 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f.<\/li>\n\n\n\n<li><strong>\u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc\u060c \u0686\u0647\u0627\u0631 \u0633\u0631\u0648\u06cc\u0633 \u0645\u062a\u0645\u0627\u06cc\u0632\u0650 \u0647\u0645\u06a9\u0627\u0631 \u0644\u0627\u0632\u0645 \u062f\u0627\u0631\u062f:<\/strong> \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 MySQL\u060c \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0648\u0631\u062f\u067e\u0631\u0633 (\u0628\u0627 PHP-FPM)\u060c \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0648\u0628\u200c\u0633\u0631\u0648\u0631 Nginx \u0648 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 Certbot \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u06af\u0648\u0627\u0647\u06cc SSL.<\/li>\n\n\n\n<li><strong>\u0627\u0639\u062a\u0628\u0627\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u062d\u0633\u0627\u0633<\/strong> (\u0631\u0645\u0632 root \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 MySQL\u060c \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc\/\u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633) \u062f\u0631 \u0641\u0627\u06cc\u0644 <code>.env<\/code> \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f \u06a9\u0647 \u0628\u0627 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc <code>.gitignore<\/code> \u0648 <code>.dockerignore<\/code> \u0627\u0632 Version Control \u0648 Image\u0647\u0627\u06cc \u062f\u0627\u06a9\u0631 \u0645\u0633\u062a\u062b\u0646\u06cc \u0634\u062f\u0647\u2014\u06a9\u0647 \u0627\u0632 \u0627\u0641\u0634\u0627\u06cc \u062a\u0635\u0627\u062f\u0641\u06cc \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n\n\n\n<li><strong>\u0627\u06cc\u0646 tutorial \u06af\u0648\u0627\u0647\u06cc\u200c\u0647\u0627\u06cc TLS\/SSL \u0631\u0627\u06cc\u06af\u0627\u0646 \u0631\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 Certbot \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 Let&#8217;s Encrypt \u067e\u06cc\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f<\/strong>\u061b \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u067e\u0644\u0627\u06af\u06cc\u0646 webroot \u0628\u0631\u0627\u06cc \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u062f\u0627\u0645\u0646\u0647. \u0641\u0631\u0627\u06cc\u0646\u062f \u0634\u0627\u0645\u0644 \u062a\u0633\u062a \u0628\u0627 \u06af\u0648\u0627\u0647\u06cc\u200c\u0647\u0627\u06cc staging \u0642\u0628\u0644 \u0627\u0632 \u062f\u0631\u06cc\u0627\u0641\u062a \u06af\u0648\u0627\u0647\u06cc\u200c\u0647\u0627\u06cc \u067e\u0631\u0648\u062f\u0627\u06a9\u0634\u0646 \u0627\u0633\u062a.<\/li>\n\n\n\n<li><strong>Volume\u0647\u0627\u06cc \u0646\u0627\u0645\u200c\u062f\u0627\u0631 \u062f\u0627\u06a9\u0631<\/strong> (dbdata\u060c wordpress\u060c certbot-etc) \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u060c \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0648 \u06af\u0648\u0627\u0647\u06cc\u200c\u0647\u0627\u06cc SSL \u0631\u0627 \u0631\u0648\u06cc \u0641\u0627\u06cc\u0644\u200c\u0633\u06cc\u0633\u062a\u0645 \u0647\u0627\u0633\u062a \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f\u061b \u06a9\u0647 \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u2014even \u0648\u0642\u062a\u06cc \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627 \u0628\u0627\u0632\u0633\u0627\u0632\u06cc \u0645\u06cc\u200c\u0634\u0648\u0646\u062f\u2014\u0645\u0627\u0646\u062f\u06af\u0627\u0631 \u0628\u0627\u0634\u0646\u062f.<\/li>\n\n\n\n<li><strong>\u0648\u0628\u200c\u0633\u0631\u0648\u0631 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u062e\u0627\u0635 \u0648\u0631\u062f\u067e\u0631\u0633 \u0644\u0627\u0632\u0645 \u062f\u0627\u0631\u062f<\/strong>\u061b \u0634\u0627\u0645\u0644 \u067e\u0631\u062f\u0627\u0632\u0634 PHP \u0627\u0632 \u0637\u0631\u06cc\u0642 FastCGI\u060c \u06a9\u0634 \u062f\u0627\u0631\u0627\u06cc\u06cc\u200c\u0647\u0627\u06cc \u0627\u0633\u062a\u0627\u062a\u06cc\u06a9\u060c \u0647\u062f\u0631\u0647\u0627\u06cc \u0627\u0645\u0646\u06cc\u062a\u06cc (X-Frame-Options\u060c Content-Security-Policy) \u0648 \u0631\u06cc\u062f\u0627\u06cc\u0631\u06a9\u062a HTTP-\u0628\u0647-HTTPS.<\/li>\n\n\n\n<li><strong>\u0647\u0645\u0647 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0634\u0628\u06a9\u0647 Bridge \u062a\u0639\u0631\u06cc\u0641\u200c\u0634\u062f\u0647-\u062a\u0648\u0633\u0637-\u06a9\u0627\u0631\u0628\u0631 (app-network) \u0645\u062a\u0635\u0644 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f<\/strong>\u061b \u06a9\u0647 \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u06cc\u0646-\u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u06cc \u0631\u0627 \u0645\u0645\u06a9\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f \u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 \u0641\u0642\u0637 \u067e\u0648\u0631\u062a\u200c\u0647\u0627\u06cc 80 \u0648 443 \u0628\u0631\u0627\u06cc \u0627\u0645\u0646\u06cc\u062a \u0628\u0647 \u062f\u0646\u06cc\u0627\u06cc \u0628\u06cc\u0631\u0648\u0646 \u0627\u0641\u0634\u0627 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f.<\/li>\n\n\n\n<li><strong>Cron Job\u0627\u06cc \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u062a\u0645\u062f\u06cc\u062f \u0631\u0627 \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u06a9\u0646\u062f<\/strong> \u06a9\u0647 \u0627\u0632 <code>certbot renew<\/code> \u0628\u0631\u0627\u06cc \u0631\u0641\u0631\u0634 \u062e\u0648\u062f\u06a9\u0627\u0631 \u06af\u0648\u0627\u0647\u06cc\u200c\u0647\u0627 \u0642\u0628\u0644 \u0627\u0632 \u0627\u0646\u0642\u0636\u0627\u06cc\u0634\u0627\u0646 (\u0647\u0631 \u06f9\u06f0 \u0631\u0648\u0632) \u0627\u0633\u062a\u0641\u0627\u062f\u0647\u061b \u0633\u067e\u0633 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc Nginx \u0631\u0627 \u0628\u0631\u0627\u06cc \u0627\u0639\u0645\u0627\u0644 \u06af\u0648\u0627\u0647\u06cc\u200c\u0647\u0627\u06cc \u0628\u0647\u200c\u0631\u0648\u0632 \u0628\u062f\u0648\u0646 \u0642\u0637\u0639\u06cc Reload \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\u067e\u06cc\u0634\u200c\u0646\u06cc\u0627\u0632\u0647\u0627<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u0627\u0632 \u0646\u0633\u062e\u0647 \u0627\u0648\u0628\u0648\u0646\u062a\u0648 20.04 \u06cc\u0627 \u067e\u0627\u06cc\u06cc\u0646\u200c\u062a\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f\u060c \u0627\u0631\u062a\u0642\u0627 \u0628\u0647 \u062c\u062f\u06cc\u062f\u062a\u0631\u06cc\u0646 \u0646\u0633\u062e\u0647 \u0631\u0627 \u062a\u0648\u0635\u06cc\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645\u061b \u0686\u0648\u0646 \u0627\u0648\u0628\u0648\u0646\u062a\u0648 \u062f\u06cc\u06af\u0631 \u0627\u06cc\u0646 \u0646\u0633\u062e\u0647\u200c\u0647\u0627 \u0631\u0627 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0646\u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u062f\u0646\u0628\u0627\u0644 \u06a9\u0631\u062f\u0646 \u0627\u06cc\u0646 tutorial \u0628\u0647 \u0627\u06cc\u0646 \u0645\u0648\u0627\u0631\u062f \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u062f:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u0633\u0631\u0648\u0631\u06cc \u0627\u062c\u0631\u0627\u06a9\u0646\u0646\u062f\u0647 \u0627\u0648\u0628\u0648\u0646\u062a\u0648<\/strong>\u060c \u0647\u0645\u0631\u0627\u0647 \u0628\u0627 \u06a9\u0627\u0631\u0628\u0631 \u063a\u06cc\u0631 root \u062f\u0627\u0631\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc sudo \u0648 \u0641\u0627\u06cc\u0631\u0648\u0627\u0644 \u0641\u0639\u0627\u0644. \u0628\u0631\u0627\u06cc \u0631\u0627\u0647\u0646\u0645\u0627\u06cc\u06cc \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc\u060c \u0628\u0647 \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0627\u0648\u0644\u06cc\u0647 \u0633\u0631\u0648\u0631 \u0628\u0627 \u0627\u0648\u0628\u0648\u0646\u062a\u0648 \u062f\u0631 \u067e\u0627\u0631\u0645\u06cc\u0646 \u06a9\u0644\u0648\u062f \u0645\u0631\u0627\u062c\u0639\u0647 \u06a9\u0646\u06cc\u062f.<\/li>\n\n\n\n<li><strong>\u062f\u0627\u06a9\u0631 \u0646\u0635\u0628\u200c\u0634\u062f\u0647 \u0631\u0648\u06cc \u0633\u0631\u0648\u0631\u062a\u0627\u0646<\/strong>\u060c \u0628\u0627 \u062f\u0646\u0628\u0627\u0644 \u06a9\u0631\u062f\u0646 \u06af\u0627\u0645\u200c\u0647\u0627\u06cc \u06f1 \u0648 \u06f2 \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u00ab\u0646\u062d\u0648\u0647 \u0646\u0635\u0628 \u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062f\u0627\u06a9\u0631 \u0631\u0648\u06cc \u0627\u0648\u0628\u0648\u0646\u062a\u0648\u00bb \u062f\u0631 \u067e\u0627\u0631\u0645\u06cc\u0646 \u06a9\u0644\u0648\u062f.<\/li>\n\n\n\n<li><strong>Docker Compose \u0646\u0635\u0628\u200c\u0634\u062f\u0647 \u0631\u0648\u06cc \u0633\u0631\u0648\u0631\u062a\u0627\u0646<\/strong>\u060c \u0628\u0627 \u062f\u0646\u0628\u0627\u0644 \u06a9\u0631\u062f\u0646 \u06af\u0627\u0645 \u06f1 \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u00ab\u0646\u062d\u0648\u0647 \u0646\u0635\u0628 Docker Compose \u0631\u0648\u06cc \u0627\u0648\u0628\u0648\u0646\u062a\u0648\u00bb \u062f\u0631 \u067e\u0627\u0631\u0645\u06cc\u0646 \u06a9\u0644\u0648\u062f.<\/li>\n\n\n\n<li><strong>\u0646\u0627\u0645 \u062f\u0627\u0645\u0646\u0647 \u062b\u0628\u062a\u200c\u0634\u062f\u0647.<\/strong> \u0627\u06cc\u0646 tutorial \u062f\u0631 \u0633\u0631\u0627\u0633\u0631 \u0645\u062a\u0646 \u0627\u0632 your_domain \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n\n\n\n<li><strong>\u0647\u0631 \u062f\u0648\u06cc \u0631\u06a9\u0648\u0631\u062f\u0647\u0627\u06cc DNS \u0632\u06cc\u0631 \u0628\u0631\u0627\u06cc \u0633\u0631\u0648\u0631\u062a\u0627\u0646 \u062a\u0646\u0638\u06cc\u0645\u200c\u0634\u062f\u0647.<\/strong> \u0628\u0631\u0627\u06cc \u062c\u0632\u0626\u06cc\u0627\u062a \u0646\u062d\u0648\u0647 \u0627\u0641\u0632\u0648\u062f\u0646 \u0622\u0646\u200c\u0647\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0645\u0642\u062f\u0645\u0647 DNS \u067e\u0627\u0631\u0645\u06cc\u0646 \u06a9\u0644\u0648\u062f \u0631\u0627 \u062f\u0646\u0628\u0627\u0644 \u06a9\u0646\u06cc\u062f:\n<ul class=\"wp-block-list\">\n<li>\u0631\u06a9\u0648\u0631\u062f A \u0628\u0627 your_domain \u06a9\u0647 \u0628\u0647 IP \u0639\u0645\u0648\u0645\u06cc \u0633\u0631\u0648\u0631\u062a\u0627\u0646 \u0627\u0634\u0627\u0631\u0647 \u06a9\u0646\u062f.<\/li>\n\n\n\n<li>\u0631\u06a9\u0648\u0631\u062f A \u0628\u0627 <a href=\"http:\/\/www.your_domain\">www.your_domain<\/a> \u06a9\u0647 \u0628\u0647 IP \u0639\u0645\u0648\u0645\u06cc \u0633\u0631\u0648\u0631\u062a\u0627\u0646 \u0627\u0634\u0627\u0631\u0647 \u06a9\u0646\u062f.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0642\u062a\u06cc \u0647\u0645\u0647\u200c\u0686\u06cc\u0632 \u0631\u0627 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0631\u062f\u06cc\u062f\u060c \u0622\u0645\u0627\u062f\u0647 \u0634\u0631\u0648\u0639 \u06af\u0627\u0645 \u0627\u0648\u0644 \u0647\u0633\u062a\u06cc\u062f.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u0646\u0635\u0628 \u0648\u0631\u062f\u067e\u0631\u0633 \u0628\u0627 Docker Compose<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Define \u06a9\u0631\u062f\u0646 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0648\u0628\u200c\u0633\u0631\u0648\u0631<\/li>\n\n\n\n<li>Define \u06a9\u0631\u062f\u0646 \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0645\u062d\u06cc\u0637\u06cc<\/li>\n\n\n\n<li>Define \u06a9\u0631\u062f\u0646 \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627 \u062f\u0631 Docker Compose<\/li>\n\n\n\n<li>\u062f\u0631\u06cc\u0627\u0641\u062a \u06af\u0648\u0627\u0647\u06cc SSL<\/li>\n\n\n\n<li>\u062a\u063a\u06cc\u06cc\u0631 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0648\u0628\u200c\u0633\u0631\u0648\u0631<\/li>\n\n\n\n<li>\u062a\u06a9\u0645\u06cc\u0644 \u0646\u0635\u0628 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0631\u0627\u0628\u0637 \u0648\u0628<\/li>\n\n\n\n<li>\u0641\u0639\u0627\u0644\u200c\u0633\u0627\u0632\u06cc \u062a\u0645\u062f\u06cc\u062f \u062e\u0648\u062f\u06a9\u0627\u0631 SSL<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\u06af\u0627\u0645 \u06f1 \u2014 \u062a\u0639\u0631\u06cc\u0641 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0648\u0628\u200c\u0633\u0631\u0648\u0631<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0642\u0628\u0644 \u0627\u0632 \u0627\u062c\u0631\u0627\u06cc \u0647\u0631 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u06cc\u060c \u0627\u0648\u0644\u06cc\u0646 \u0642\u062f\u0645\u200c\u062a\u0627\u0646 \u062a\u0639\u0631\u06cc\u0641 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0648\u0628\u200c\u0633\u0631\u0648\u0631 Nginx \u0627\u0633\u062a. \u0641\u0627\u06cc\u0644 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc\u200c\u062a\u0627\u0646 \u0634\u0627\u0645\u0644 \u0628\u0631\u062e\u06cc \u0628\u0644\u0627\u06a9\u200c\u0647\u0627\u06cc location \u062e\u0627\u0635-\u0648\u0631\u062f\u067e\u0631\u0633\u2014to\u200c\u0647\u0645\u0631\u0627\u0647 \u0628\u0644\u0627\u06a9 location\u0627\u06cc \u0628\u0631\u0627\u06cc \u0647\u062f\u0627\u06cc\u062a \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u062a\u0623\u06cc\u06cc\u062f Let&#8217;s Encrypt \u0628\u0647 \u06a9\u0644\u0627\u06cc\u0646\u062a Certbot \u0628\u0631\u0627\u06cc \u062a\u0645\u062f\u06cc\u062f\u0647\u0627\u06cc \u062e\u0648\u062f\u06a9\u0627\u0631 \u06af\u0648\u0627\u0647\u06cc\u2014\u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0648\u0644\u060c \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u067e\u0631\u0648\u0698\u0647\u200c\u0627\u06cc \u0628\u0631\u0627\u06cc \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0648\u0631\u062f\u067e\u0631\u0633\u200c\u062a\u0627\u0646 \u0628\u0633\u0627\u0632\u06cc\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u0645\u062b\u0627\u0644\u060c wordpress \u0646\u0627\u0645\u06cc\u062f\u0647 \u0634\u062f\u0647. \u0627\u06af\u0631 \u0628\u062e\u0648\u0627\u0647\u06cc\u062f \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0646\u0627\u0645 \u062f\u06cc\u06af\u0631\u06cc \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0628\u06af\u0630\u0627\u0631\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir wordpress<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u067e\u0633 \u0628\u0647 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0628\u0631\u0648\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cd wordpress<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f\u060c \u0628\u0631\u0627\u06cc \u0641\u0627\u06cc\u0644 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0628\u0633\u0627\u0632\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir nginx-conf<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0627\u06cc\u0644 \u0631\u0627 \u0628\u0627 nano \u06cc\u0627 \u0648\u06cc\u0631\u0627\u06cc\u0634\u06af\u0631 \u0645\u0648\u0631\u062f \u0639\u0644\u0627\u0642\u0647\u200c\u062a\u0627\u0646 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nano nginx-conf\/nginx.conf<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644\u060c server block\u0627\u06cc \u0628\u0627 \u062f\u0627\u06cc\u0631\u06a9\u062a\u06cc\u0648\u0647\u0627\u06cc\u06cc \u0628\u0631\u0627\u06cc \u0646\u0627\u0645 \u0633\u0631\u0648\u0631 \u0648 \u0631\u06cc\u0634\u0647 \u0633\u0646\u062f\u060c \u0648 \u0628\u0644\u0627\u06a9\u200c\u0647\u0627\u06cc location\u0627\u06cc \u0628\u0631\u0627\u06cc \u0647\u062f\u0627\u06cc\u062a \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06af\u0648\u0627\u0647\u06cc \u06a9\u0644\u0627\u06cc\u0646\u062a Certbot\u060c \u067e\u0631\u062f\u0627\u0632\u0634 PHP \u0648 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u062f\u0627\u0631\u0627\u06cc\u06cc \u0627\u0633\u062a\u0627\u062a\u06cc\u06a9 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u06a9\u062f \u0632\u06cc\u0631 \u0631\u0627 \u062f\u0631 \u0641\u0627\u06cc\u0644 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f. \u062d\u062a\u0645\u0627\u064b your_domain \u0631\u0627 \u0628\u0627 \u0646\u0627\u0645 \u062f\u0627\u0645\u0646\u0647 \u062e\u0648\u062f\u062a\u0627\u0646 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>~\/wordpress\/nginx-conf\/nginx.conf<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>server {\n        listen 80;\n        listen &#91;::]:80;\n\n        server_name your_domain www.your_domain;\n\n        index index.php index.html index.htm;\n\n        root \/var\/www\/html;\n\n        location ~ \/.well-known\/acme-challenge {\n                allow all;\n                root \/var\/www\/html;\n        }\n\n        location \/ {\n                try_files $uri $uri\/ \/index.php$is_args$args;\n        }\n\n        location ~ \\.php$ {\n                try_files $uri =404;\n                fastcgi_split_path_info ^(.+\\.php)(\/.+)$;\n                fastcgi_pass wordpress:9000;\n                fastcgi_index index.php;\n                include fastcgi_params;\n                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;\n                fastcgi_param PATH_INFO $fastcgi_path_info;\n        }\n\n        location ~ \/\\.ht {\n                deny all;\n        }\n\n        location = \/favicon.ico {\n                log_not_found off; access_log off;\n        }\n        location = \/robots.txt {\n                log_not_found off; access_log off; allow all;\n        }\n        location ~* \\.(css|gif|ico|jpeg|jpg|js|png)$ {\n                expires max;\n                log_not_found off;\n        }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Server block \u0645\u0627 \u0634\u0627\u0645\u0644 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0632\u06cc\u0631 \u0627\u0633\u062a:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u062f\u0627\u06cc\u0631\u06a9\u062a\u06cc\u0648\u0647\u0627:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>listen:<\/strong> \u0628\u0647 Nginx \u0645\u06cc\u200c\u06af\u0648\u06cc\u062f \u0631\u0648\u06cc \u067e\u0648\u0631\u062a 80 \u06af\u0648\u0634 \u0628\u062f\u0647\u062f\u061b \u06a9\u0647 \u0628\u0647 \u0634\u0645\u0627 \u0627\u062c\u0627\u0632\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u067e\u0644\u0627\u06af\u06cc\u0646 webroot \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 Certbot \u0628\u0631\u0627\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u06af\u0648\u0627\u0647\u06cc\u200c\u062a\u0627\u0646 \u0631\u0627 \u0645\u06cc\u200c\u062f\u0647\u062f. \u062f\u0642\u062a \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0647\u0646\u0648\u0632 \u067e\u0648\u0631\u062a 443 \u0631\u0627 \u0634\u0627\u0645\u0644 \u0646\u0634\u062f\u0647\u2014\u0648\u0642\u062a\u06cc \u06af\u0648\u0627\u0647\u06cc\u200c\u0647\u0627\u06cc\u200c\u062a\u0627\u0646 \u0631\u0627 \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u06af\u0631\u0641\u062a\u06cc\u062f\u060c \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc\u200c\u062a\u0627\u0646 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0634\u0627\u0645\u0644 \u06a9\u0631\u062f\u0646 SSL \u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f.<\/li>\n\n\n\n<li><strong>server_name:<\/strong> \u0646\u0627\u0645 \u0633\u0631\u0648\u0631 \u0648 server block\u06cc \u06a9\u0647 \u0628\u0631\u0627\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u0628\u0647 \u0633\u0631\u0648\u0631\u062a\u0627\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u0648\u062f \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u062d\u062a\u0645\u0627\u064b your_domain \u0631\u0627 \u062f\u0631 \u0627\u06cc\u0646 \u062e\u0637 \u0628\u0627 \u0646\u0627\u0645 \u062f\u0627\u0645\u0646\u0647 \u062e\u0648\u062f\u062a\u0627\u0646 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06a9\u0646\u06cc\u062f.<\/li>\n\n\n\n<li><strong>index:<\/strong> \u0627\u06cc\u0646 \u062f\u0627\u06cc\u0631\u06a9\u062a\u06cc\u0648 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc\u06cc \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u0647 \u0647\u0646\u06af\u0627\u0645 \u067e\u0631\u062f\u0627\u0632\u0634 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627 \u0628\u0647 \u0633\u0631\u0648\u0631\u062a\u0627\u0646 \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 Index \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f. \u062a\u0631\u062a\u06cc\u0628 \u0627\u0648\u0644\u0648\u06cc\u062a \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u0631\u0627 \u0627\u06cc\u0646\u062c\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0627\u062f\u0647 \u0648 index.php \u0631\u0627 \u062c\u0644\u0648\u06cc index.html \u06af\u0630\u0627\u0634\u062a\u0647\u200c\u0627\u06cc\u062f \u062a\u0627 Nginx \u062a\u0627 \u062c\u0627\u06cc \u0645\u0645\u06a9\u0646 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0628\u0647\u200c\u0646\u0627\u0645 index.php \u0631\u0627 \u0627\u0648\u0644\u0648\u06cc\u062a \u0628\u062f\u0647\u062f.<\/li>\n\n\n\n<li><strong>root:<\/strong> \u0627\u06cc\u0646 \u062f\u0627\u06cc\u0631\u06a9\u062a\u06cc\u0648 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0631\u06cc\u0634\u0647 \u0628\u0631\u0627\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627 \u0628\u0647 \u0633\u0631\u0648\u0631\u062a\u0627\u0646 \u0631\u0627 \u0646\u0627\u0645\u200c\u06af\u0630\u0627\u0631\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0627\u06cc\u0646 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u06cc\u0639\u0646\u06cc <code>\/var\/www\/html<\/code>\u060c \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 Mount Point \u062f\u0631 \u0632\u0645\u0627\u0646 \u0628\u06cc\u0644\u062f \u062a\u0648\u0633\u0637 \u062f\u0633\u062a\u0648\u0631\u0627\u0644\u0639\u0645\u0644\u200c\u0647\u0627\u06cc Dockerfile \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0648\u0631\u062f\u067e\u0631\u0633 \u0633\u0627\u062e\u062a\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0628\u0644\u0627\u06a9\u200c\u0647\u0627\u06cc Location:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>location ~ \/.well-known\/acme-challenge:<\/strong> \u0627\u06cc\u0646 \u0628\u0644\u0627\u06a9 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627 \u0628\u0647 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc <code>.well-known<\/code> \u0631\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc\u200c\u06a9\u0646\u062f\u061b \u062c\u0627\u06cc\u06cc \u06a9\u0647 Certbot \u0641\u0627\u06cc\u0644 \u0645\u0648\u0642\u062a\u06cc \u0628\u0631\u0627\u06cc \u062a\u0623\u06cc\u06cc\u062f \u0627\u06cc\u0646\u06a9\u0647 DNS \u062f\u0627\u0645\u0646\u0647\u200c\u062a\u0627\u0646 \u0628\u0647 \u0633\u0631\u0648\u0631\u062a\u0627\u0646 Resolve \u0645\u06cc\u200c\u0634\u0648\u062f \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u062f\u0647\u062f. \u0628\u0627 \u0628\u0631\u0642\u0631\u0627\u0631\u06cc \u0627\u06cc\u0646 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u067e\u0644\u0627\u06af\u06cc\u0646 webroot \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 Certbot \u0628\u0631\u0627\u06cc \u06af\u0631\u0641\u062a\u0646 \u06af\u0648\u0627\u0647\u06cc \u0628\u0631\u0627\u06cc \u062f\u0627\u0645\u0646\u0647\u200c\u062a\u0627\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/li>\n\n\n\n<li><strong>location \/:<\/strong> \u062f\u0631 \u0627\u06cc\u0646 \u0628\u0644\u0627\u06a9\u060c \u062f\u0627\u06cc\u0631\u06a9\u062a\u06cc\u0648 try_files \u0628\u0631\u0627\u06cc \u0686\u06a9 \u06a9\u0631\u062f\u0646 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0645\u0646\u0637\u0628\u0642 \u0628\u0627 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc URI \u0645\u0646\u0641\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f. \u0627\u0645\u0627 \u0628\u0647\u200c\u062c\u0627\u06cc \u0628\u0631\u06af\u0631\u062f\u0627\u0646\u062f\u0646 \u0648\u0636\u0639\u06cc\u062a 404 Not Found \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636\u060c \u06a9\u0646\u062a\u0631\u0644 \u0631\u0627 \u0628\u0627 \u0622\u0631\u06af\u0648\u0645\u0627\u0646\u200c\u0647\u0627\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0628\u0647 \u0641\u0627\u06cc\u0644 index.php \u0648\u0631\u062f\u067e\u0631\u0633 \u067e\u0627\u0633 \u0645\u06cc\u200c\u062f\u0647\u06cc\u062f.<\/li>\n\n\n\n<li><strong>location ~ .php$:<\/strong> \u0627\u06cc\u0646 \u0628\u0644\u0627\u06a9 \u067e\u0631\u062f\u0627\u0632\u0634 PHP \u0631\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0648 \u0627\u06cc\u0646 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627 \u0631\u0627 \u0628\u0647 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 wordpress \u0634\u0645\u0627 Proxy \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0686\u0648\u0646 Docker Image \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0648\u0631\u062f\u067e\u0631\u0633\u200c\u062a\u0627\u0646 \u0628\u0631 \u067e\u0627\u06cc\u0647 image \u06cc\u0639\u0646\u06cc <code>php:fpm<\/code> \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f\u060c \u06af\u0632\u06cc\u0646\u0647\u200c\u0647\u0627\u06cc \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u062e\u0627\u0635\u0650 \u067e\u0631\u0648\u062a\u06a9\u0644 FastCGI \u0631\u0627 \u0647\u0645 \u062f\u0631 \u0627\u06cc\u0646 \u0628\u0644\u0627\u06a9 \u0634\u0627\u0645\u0644 \u0645\u06cc\u200c\u0634\u0648\u06cc\u062f. Nginx \u067e\u0631\u062f\u0627\u0632\u0634\u06af\u0631 PHP \u0645\u0633\u062a\u0642\u0644\u06cc \u0628\u0631\u0627\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc PHP \u0644\u0627\u0632\u0645 \u062f\u0627\u0631\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0648\u0631\u062f\u060c \u0627\u06cc\u0646 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627 \u062a\u0648\u0633\u0637 \u067e\u0631\u062f\u0627\u0632\u0634\u06af\u0631 php-fpm\u0650 \u0645\u0648\u062c\u0648\u062f \u0628\u0627 image \u06cc\u0639\u0646\u06cc <code>php:fpm<\/code> \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc\u200c\u0634\u0648\u0646\u062f.<\/li>\n\n\n\n<li><strong>location ~ \/.ht:<\/strong> \u0627\u06cc\u0646 \u0628\u0644\u0627\u06a9 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc .htaccess \u0631\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc\u200c\u06a9\u0646\u062f\u061b \u0686\u0648\u0646 Nginx \u0622\u0646\u200c\u0647\u0627 \u0631\u0627 \u0633\u0631\u0648 \u0646\u0645\u06cc\u200c\u06a9\u0646\u062f. \u062f\u0627\u06cc\u0631\u06a9\u062a\u06cc\u0648 deny_all \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc .htaccess \u0647\u0631\u06af\u0632 \u0628\u0647 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0633\u0631\u0648 \u0646\u0634\u0648\u0646\u062f.<\/li>\n\n\n\n<li><strong>location = \/favicon.ico\u060c location = \/robots.txt:<\/strong> \u0627\u06cc\u0646 \u0628\u0644\u0627\u06a9\u200c\u0647\u0627 \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u0628\u0647 \/favicon.ico \u0648 \/robots.txt \u0644\u0627\u06af \u0646\u0634\u0648\u0646\u062f.<\/li>\n\n\n\n<li><em>location ~ .(css|gif|ico|jpeg|jpg|js|png)$:<\/em>* \u0627\u06cc\u0646 \u0628\u0644\u0627\u06a9 \u0644\u0627\u06af\u06cc\u0646\u06af \u0628\u0631\u0627\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u062f\u0627\u0631\u0627\u06cc\u06cc \u0627\u0633\u062a\u0627\u062a\u06cc\u06a9 \u0631\u0627 \u062e\u0627\u0645\u0648\u0634 \u0648 \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0627\u06cc\u0646 \u062f\u0627\u0631\u0627\u06cc\u06cc\u200c\u0647\u0627\u2014\u0686\u0648\u0646 \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0633\u0631\u0648 \u06a9\u0631\u062f\u0646\u200c\u0634\u0627\u0646 \u067e\u0631\u0647\u0632\u06cc\u0646\u0647 \u0627\u0633\u062a\u2014\u0628\u0633\u06cc\u0627\u0631 \u0642\u0627\u0628\u0644\u200c\u06a9\u0634 \u0628\u0627\u0634\u0646\u062f.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0628\u06cc\u0634\u062a\u0631 \u062f\u0631\u0628\u0627\u0631\u0647 Proxy \u06a9\u0631\u062f\u0646 FastCGI\u060c \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u00ab\u062f\u0631\u06a9 \u0648 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc FastCGI Proxying \u062f\u0631 Nginx\u00bb \u0648 \u0628\u0631\u0627\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062f\u0631\u0628\u0627\u0631\u0647 Server \u0648 Location Block\u0647\u0627\u060c \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u00ab\u062f\u0631\u06a9 \u0627\u0644\u06af\u0648\u0631\u06cc\u062a\u0645\u200c\u0647\u0627\u06cc \u0627\u0646\u062a\u062e\u0627\u0628 Server \u0648 Location Block \u062f\u0631 Nginx\u00bb \u0631\u0627 \u062f\u0631 \u067e\u0627\u0631\u0645\u06cc\u0646 \u06a9\u0644\u0648\u062f \u0628\u062e\u0648\u0627\u0646\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0642\u062a\u06cc \u0648\u06cc\u0631\u0627\u06cc\u0634 \u062a\u0645\u0627\u0645 \u0634\u062f \u0641\u0627\u06cc\u0644 \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u0648 \u0628\u0628\u0646\u062f\u06cc\u062f. \u0627\u06af\u0631 \u0627\u0632 nano \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f\u060c \u0628\u0627 <code>CTRL+X<\/code>\u060c <code>Y<\/code> \u0648 \u0633\u067e\u0633 <code>ENTER<\/code> \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u0628\u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0627 \u0628\u0631\u0642\u0631\u0627\u0631\u06cc \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc Nginx\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647 \u0633\u0627\u062e\u062a \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0645\u062d\u06cc\u0637\u06cc \u0628\u0631\u0627\u06cc \u067e\u0627\u0633 \u062f\u0627\u062f\u0646 \u0628\u0647 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0648 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633\u200c\u062a\u0627\u0646 \u062f\u0631 \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627 \u0628\u0631\u0648\u06cc\u062f.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u06af\u0627\u0645 \u06f2 \u2014 \u062a\u0639\u0631\u06cc\u0641 \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0645\u062d\u06cc\u0637\u06cc<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0648 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0648\u0631\u062f\u067e\u0631\u0633 \u0634\u0645\u0627 \u062f\u0631 \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627 \u0628\u0647 \u062f\u0633\u062a\u0631\u0633\u06cc \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0645\u062d\u06cc\u0637\u06cc \u062e\u0627\u0635\u06cc \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u0646\u062f \u062a\u0627 \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u200c\u062a\u0627\u0646 \u0645\u0627\u0646\u062f\u06af\u0627\u0631 \u0648 \u0628\u0631\u0627\u06cc \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 \u0628\u0645\u0627\u0646\u0646\u062f. \u0627\u06cc\u0646 \u0645\u062a\u063a\u06cc\u0631\u0647\u0627 \u0634\u0627\u0645\u0644 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062d\u0633\u0627\u0633 \u0648 \u063a\u06cc\u0631\u062d\u0633\u0627\u0633 \u0647\u0633\u062a\u0646\u062f: \u0645\u0642\u0627\u062f\u06cc\u0631 \u062d\u0633\u0627\u0633 \u0628\u0631\u0627\u06cc \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 root \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 MySQL \u0648 \u06a9\u0627\u0631\u0628\u0631\/\u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u061b \u0648 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u063a\u06cc\u0631\u062d\u0633\u0627\u0633 \u0628\u0631\u0627\u06cc \u0646\u0627\u0645 \u0648 \u0647\u0627\u0633\u062a \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0647\u200c\u062c\u0627\u06cc \u062a\u0646\u0638\u06cc\u0645 \u0647\u0645\u0647 \u0627\u06cc\u0646 \u0645\u0642\u0627\u062f\u06cc\u0631 \u062f\u0631 \u0641\u0627\u06cc\u0644 Docker Compose \u062e\u0648\u062f\u062a\u0627\u0646\u2014\u0641\u0627\u06cc\u0644 \u0627\u0635\u0644\u06cc \u062d\u0627\u0648\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0646\u062d\u0648\u0647 \u0627\u062c\u0631\u0627\u06cc \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc\u200c\u062a\u0627\u0646\u2014\u0645\u0642\u0627\u062f\u06cc\u0631 \u062d\u0633\u0627\u0633 \u0631\u0627 \u062f\u0631 \u0641\u0627\u06cc\u0644 <code>.env<\/code> \u062a\u0646\u0638\u06cc\u0645 \u0648 \u06af\u0631\u062f\u0634\u200c\u0634\u0627\u0646 \u0631\u0627 \u0645\u062d\u062f\u0648\u062f \u06a9\u0646\u06cc\u062f. \u0627\u06cc\u0646 \u0627\u0632 \u06a9\u067e\u06cc \u0634\u062f\u0646 \u0627\u06cc\u0646 \u0645\u0642\u0627\u062f\u06cc\u0631 \u0628\u0647 \u0645\u062e\u0627\u0632\u0646 \u067e\u0631\u0648\u0698\u0647\u200c\u062a\u0627\u0646 \u0648 \u0627\u0641\u0634\u0627\u06cc \u0639\u0645\u0648\u0645\u06cc \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0627\u0635\u0644\u06cc \u067e\u0631\u0648\u0698\u0647 \u06cc\u0639\u0646\u06cc <code>~\/wordpress<\/code>\u060c \u0641\u0627\u06cc\u0644\u06cc \u0628\u0647 \u0646\u0627\u0645 <code>.env<\/code> \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nano .env<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0642\u0627\u062f\u06cc\u0631 \u0645\u062d\u0631\u0645\u0627\u0646\u0647\u200c\u0627\u06cc \u06a9\u0647 \u062f\u0631 \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u062a\u0646\u0638\u06cc\u0645 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f \u0634\u0627\u0645\u0644 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631\u06cc \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 root \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 MySQL \u0648 \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0648 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631\u06cc \u06a9\u0647 \u0648\u0631\u062f\u067e\u0631\u0633 \u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f\u060c \u0647\u0633\u062a\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0646\u0627\u0645\u200c\u0647\u0627 \u0648 \u0645\u0642\u0627\u062f\u06cc\u0631 \u0645\u062a\u063a\u06cc\u0631 \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0647 \u0641\u0627\u06cc\u0644 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f. \u06cc\u0627\u062f\u062a\u0627\u0646 \u0628\u0627\u0634\u062f \u0628\u0631\u0627\u06cc \u0647\u0631 \u0645\u062a\u063a\u06cc\u0631 \u0645\u0642\u0627\u062f\u06cc\u0631 \u062e\u0648\u062f\u062a\u0627\u0646 \u0631\u0627 \u0641\u0631\u0627\u0647\u0645 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>~\/wordpress\/.env<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>MYSQL_ROOT_PASSWORD=your_root_password\nMYSQL_USER=your_wordpress_database_user\nMYSQL_PASSWORD=your_wordpress_database_password<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0634\u0627\u0645\u0644 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631\u06cc \u0628\u0631\u0627\u06cc \u062d\u0633\u0627\u0628 \u0645\u062f\u06cc\u0631\u06cc\u062a\u06cc root\u2014to\u200c\u0647\u0645\u0631\u0627\u0647 \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0648 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0645\u0648\u0631\u062f \u0639\u0644\u0627\u0642\u0647 \u0628\u0631\u0627\u06cc \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u200c\u062a\u0627\u0646.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0642\u062a\u06cc \u0648\u06cc\u0631\u0627\u06cc\u0634 \u062a\u0645\u0627\u0645 \u0634\u062f \u0641\u0627\u06cc\u0644 \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u0648 \u0628\u0628\u0646\u062f\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0686\u0648\u0646 \u0641\u0627\u06cc\u0644 <code>.env<\/code> \u0634\u0645\u0627 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062d\u0633\u0627\u0633\u06cc \u0634\u0627\u0645\u0644 \u0645\u06cc\u200c\u0634\u0648\u062f\u060c \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u062f \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u062f\u0631 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc <code>.gitignore<\/code> \u0648 <code>.dockerignore<\/code> \u067e\u0631\u0648\u0698\u0647\u200c\u062a\u0627\u0646 \u06af\u0646\u062c\u0627\u0646\u062f\u0647 \u0634\u062f\u0647 \u0628\u0627\u0634\u062f. \u0627\u06cc\u0646 \u0628\u0647 Git \u0648 \u062f\u0627\u06a9\u0631 \u0645\u06cc\u200c\u06af\u0648\u06cc\u062f \u0686\u0647 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc\u06cc \u0631\u0627\u2014\u0628\u0647\u200c\u062a\u0631\u062a\u06cc\u0628\u2014to \u0645\u062e\u0627\u0632\u0646 Git \u0648 Image\u0647\u0627\u06cc \u062f\u0627\u06a9\u0631 \u0634\u0645\u0627 \u06a9\u067e\u06cc \u0646\u06a9\u0646\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u0642\u0635\u062f \u06a9\u0627\u0631 \u0628\u0627 Git \u0628\u0631\u0627\u06cc Version Control \u0631\u0627 \u062f\u0627\u0631\u06cc\u062f\u060c \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u06a9\u0627\u0631\u06cc \u0641\u0639\u0644\u06cc\u200c\u062a\u0627\u0646 \u0631\u0627 \u0628\u0627 <code>git init<\/code> \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u0645\u062e\u0632\u0646 \u0645\u0642\u062f\u0627\u0631\u062f\u0647\u06cc \u0627\u0648\u0644\u06cc\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git init<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u067e\u0633 \u0641\u0627\u06cc\u0644 <code>.gitignore<\/code> \u0628\u0633\u0627\u0632\u06cc\u062f \u0648 \u0628\u0627\u0632\u0634 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nano .gitignore<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>.env<\/code> \u0631\u0627 \u0628\u0647 \u0641\u0627\u06cc\u0644 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>~\/wordpress\/.gitignore<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.env<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0642\u062a\u06cc \u0648\u06cc\u0631\u0627\u06cc\u0634 \u062a\u0645\u0627\u0645 \u0634\u062f \u0641\u0627\u06cc\u0644 \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u0648 \u0628\u0628\u0646\u062f\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0647\u200c\u0637\u0648\u0631 \u0645\u0634\u0627\u0628\u0647\u060c \u0627\u062d\u062a\u06cc\u0627\u0637 \u062e\u0648\u0628\u06cc \u0627\u0633\u062a \u06a9\u0647 <code>.env<\/code> \u0631\u0627 \u0628\u0647 \u0641\u0627\u06cc\u0644 <code>.dockerignore<\/code> \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0648\u0642\u062a\u06cc \u0627\u0632 \u0627\u06cc\u0646 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 Build Context \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f\u060c \u062f\u0631 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc\u200c\u062a\u0627\u0646 \u0646\u0646\u0634\u06cc\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0627\u06cc\u0644 \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nano .dockerignore<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>.env<\/code> \u0631\u0627 \u0628\u0647 \u0641\u0627\u06cc\u0644 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>~\/wordpress\/.dockerignore<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.env<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0632\u06cc\u0631 \u0627\u06cc\u0646\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u062e\u062a\u06cc\u0627\u0631\u06cc \u0641\u0627\u06cc\u0644\u200c\u0647\u0627 \u0648 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc\u200c\u0647\u0627\u06cc \u0645\u0631\u062a\u0628\u0637 \u0628\u0627 \u062a\u0648\u0633\u0639\u0647 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u200c\u062a\u0627\u0646 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>~\/wordpress\/.dockerignore<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.env\n.git\ndocker-compose.yml\n.dockerignore<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0642\u062a\u06cc \u062a\u0645\u0627\u0645 \u0634\u062f \u0641\u0627\u06cc\u0644 \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u0648 \u0628\u0628\u0646\u062f\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0627 \u0628\u0631\u0642\u0631\u0627\u0631\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062d\u0633\u0627\u0633\u200c\u062a\u0627\u0646\u060c \u062d\u0627\u0644\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647 \u062a\u0639\u0631\u06cc\u0641 \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc\u200c\u062a\u0627\u0646 \u062f\u0631 \u0641\u0627\u06cc\u0644 docker-compose.yml \u0628\u0631\u0648\u06cc\u062f.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u06af\u0627\u0645 \u06f3 \u2014 \u062a\u0639\u0631\u06cc\u0641 \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627 \u0628\u0627 Docker Compose<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0627\u06cc\u0644 docker-compose.yml \u0634\u0645\u0627 \u0634\u0627\u0645\u0644 \u062a\u0639\u0627\u0631\u06cc\u0641 \u0633\u0631\u0648\u06cc\u0633 \u0628\u0631\u0627\u06cc \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc\u200c\u062a\u0627\u0646 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f. \u0633\u0631\u0648\u06cc\u0633 \u062f\u0631 Compose \u06cc\u0639\u0646\u06cc \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0650 \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627\u061b \u0648 \u062a\u0639\u0627\u0631\u06cc\u0641 \u0633\u0631\u0648\u06cc\u0633 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0646\u062d\u0648\u0647 \u0627\u062c\u0631\u0627\u06cc \u0647\u0631 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0631\u0627 \u0645\u0634\u062e\u0635 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Compose\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641\u06cc \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u200c\u0647\u0627\u06cc \u0686\u0646\u062f\u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u06cc \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u062f\u061b \u0686\u0648\u0646 Compose \u0628\u0647 \u0634\u0645\u0627 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f \u0627\u06cc\u0646 \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627 \u0631\u0627 \u0628\u0627 \u0634\u0628\u06a9\u0647\u200c\u0647\u0627 \u0648 Volume\u0647\u0627\u06cc \u0645\u0634\u062a\u0631\u06a9 \u0628\u0647 \u0647\u0645 \u0644\u06cc\u0646\u06a9 \u06a9\u0646\u06cc\u062f. \u0627\u06cc\u0646 \u0628\u0631\u0627\u06cc \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0641\u0639\u0644\u06cc\u200c\u062a\u0627\u0646 \u0645\u0641\u06cc\u062f \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f\u061b \u0686\u0648\u0646 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641\u06cc \u0628\u0631\u0627\u06cc \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633\u060c \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0648\u0631\u062f\u067e\u0631\u0633 \u0648 \u0648\u0628\u200c\u0633\u0631\u0648\u0631 \u0645\u06cc\u200c\u0633\u0627\u0632\u06cc\u062f. \u0647\u0645\u200c\u0686\u0646\u06cc\u0646 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u06cc \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u06a9\u0644\u0627\u06cc\u0646\u062a Certbot \u0628\u0631\u0627\u06cc \u06af\u0631\u0641\u062a\u0646 \u06af\u0648\u0627\u0647\u06cc \u0628\u0631\u0627\u06cc \u0648\u0628\u200c\u0633\u0631\u0648\u0631\u062a\u0627\u0646 \u0645\u06cc\u200c\u0633\u0627\u0632\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0634\u0631\u0648\u0639\u060c \u0641\u0627\u06cc\u0644 docker-compose.yml \u0631\u0627 \u0628\u0633\u0627\u0632\u06cc\u062f \u0648 \u0628\u0627\u0632\u0634 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nano docker-compose.yml<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u06a9\u062f \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0631\u0627\u06cc \u062a\u0639\u0631\u06cc\u0641 \u0646\u0633\u062e\u0647 \u0641\u0627\u06cc\u0644 Compose \u0648 \u0633\u0631\u0648\u06cc\u0633 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u06cc\u0639\u0646\u06cc db \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>~\/wordpress\/docker-compose.yml<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>version: '3'\n\nservices:\n  db:\n    image: mysql:8.0\n    container_name: db\n    restart: unless-stopped\n    env_file: .env\n    environment:\n      - MYSQL_DATABASE=wordpress\n    volumes:\n      - dbdata:\/var\/lib\/mysql\n    command: '--default-authentication-plugin=mysql_native_password'\n    networks:\n      - app-network<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0639\u0631\u06cc\u0641 \u0633\u0631\u0648\u06cc\u0633 db \u0634\u0627\u0645\u0644 \u06af\u0632\u06cc\u0646\u0647\u200c\u0647\u0627\u06cc \u0632\u06cc\u0631 \u0627\u0633\u062a:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>image:<\/strong> \u0628\u0647 Compose \u0645\u06cc\u200c\u06af\u0648\u06cc\u062f \u0686\u0647 Image\u0627\u06cc \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 Pull \u06a9\u0646\u062f. \u0627\u06cc\u0646\u062c\u0627 Image \u06cc\u0639\u0646\u06cc <code>mysql:8.0<\/code> \u0631\u0627 Pin \u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u062f \u062a\u0627 \u0627\u0632 \u062a\u0639\u0627\u0631\u0636\u200c\u0647\u0627\u06cc \u0622\u06cc\u0646\u062f\u0647 \u0627\u062c\u062a\u0646\u0627\u0628 \u0634\u0648\u062f\u061b \u0686\u0648\u0646 image \u06cc\u0639\u0646\u06cc <code>mysql:latest<\/code> \u0647\u0645\u0686\u0646\u0627\u0646 \u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0645\u06cc\u200c\u0634\u0648\u062f.<\/li>\n\n\n\n<li><strong>container_name:<\/strong> \u0627\u06cc\u0646 \u0646\u0627\u0645\u06cc \u0628\u0631\u0627\u06cc \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u062a\u0639\u06cc\u06cc\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n\n\n\n<li><strong>restart:<\/strong> \u0627\u06cc\u0646 \u0633\u06cc\u0627\u0633\u062a \u0631\u06cc\u200c\u0627\u0633\u062a\u0627\u0631\u062a \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 no \u0627\u0633\u062a\u061b \u0627\u0645\u0627 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0631\u0627 \u0637\u0648\u0631\u06cc \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u062f \u06a9\u0647 \u0645\u06af\u0631 \u062f\u0633\u062a\u06cc \u0645\u062a\u0648\u0642\u0641 \u0634\u0648\u062f \u0631\u06cc\u200c\u0627\u0633\u062a\u0627\u0631\u062a \u0634\u0648\u062f.<\/li>\n\n\n\n<li><strong>env_file:<\/strong> \u0627\u06cc\u0646 \u06af\u0632\u06cc\u0646\u0647 \u0628\u0647 Compose \u0645\u06cc\u200c\u06af\u0648\u06cc\u062f \u06a9\u0647 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u062f \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0645\u062d\u06cc\u0637\u06cc \u0631\u0627 \u0627\u0632 \u0641\u0627\u06cc\u0644\u06cc \u0628\u0647 \u0646\u0627\u0645 <code>.env<\/code>\u2014\u0648\u0627\u0642\u0639 \u062f\u0631 Build Context \u062e\u0648\u062f\u062a\u0627\u0646\u2014\u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0648\u0631\u062f\u060c Build Context \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0641\u0639\u0644\u06cc\u200c\u062a\u0627\u0646 \u0627\u0633\u062a.<\/li>\n\n\n\n<li><strong>environment:<\/strong> \u0627\u06cc\u0646 \u06af\u0632\u06cc\u0646\u0647 \u0628\u0647 \u0634\u0645\u0627 \u0627\u062c\u0627\u0632\u0647 \u0627\u0641\u0632\u0648\u062f\u0646 \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0645\u062d\u06cc\u0637\u06cc \u0627\u0636\u0627\u0641\u06cc\u2014\u0641\u0631\u0627\u062a\u0631 \u0627\u0632 \u0622\u0646\u200c\u0647\u0627\u06cc \u062a\u0639\u0631\u06cc\u0641\u200c\u0634\u062f\u0647 \u062f\u0631 \u0641\u0627\u06cc\u0644 <code>.env<\/code>\u2014\u0631\u0627 \u0645\u06cc\u200c\u062f\u0647\u062f. \u0645\u062a\u063a\u06cc\u0631 MYSQL_DATABASE \u0631\u0627 \u0631\u0648\u06cc wordpress \u062a\u0646\u0638\u06cc\u0645 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f \u062a\u0627 \u0646\u0627\u0645\u06cc \u0628\u0631\u0627\u06cc \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u200c\u062a\u0627\u0646 \u0641\u0631\u0627\u0647\u0645 \u0634\u0648\u062f. \u0686\u0648\u0646 \u0627\u06cc\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u063a\u06cc\u0631\u062d\u0633\u0627\u0633 \u0627\u0633\u062a\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0645\u0633\u062a\u0642\u06cc\u0645 \u062f\u0631 \u0641\u0627\u06cc\u0644 docker-compose.yml \u0634\u0627\u0645\u0644\u0634 \u06a9\u0646\u06cc\u062f.<\/li>\n\n\n\n<li><strong>volumes:<\/strong> \u0627\u06cc\u0646\u062c\u0627\u060c Volume \u0646\u0627\u0645\u200c\u062f\u0627\u0631\u06cc \u0628\u0647 \u0646\u0627\u0645 dbdata \u0631\u0627 \u0628\u0647 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc <code>\/var\/lib\/mysql<\/code> \u0631\u0648\u06cc \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 Mount \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f. \u0627\u06cc\u0646 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u062f\u0627\u062f\u0647 \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f MySQL \u0631\u0648\u06cc \u0628\u06cc\u0634\u062a\u0631 \u062a\u0648\u0632\u06cc\u0639\u200c\u0647\u0627\u0633\u062a.<\/li>\n\n\n\n<li><strong>command:<\/strong> \u0627\u06cc\u0646 \u06af\u0632\u06cc\u0646\u0647 \u062f\u0633\u062a\u0648\u0631\u06cc \u0628\u0631\u0627\u06cc Override \u06a9\u0631\u062f\u0646 \u062f\u0633\u062a\u0648\u0631\u0627\u0644\u0639\u0645\u0644 CMD \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 image \u062a\u0639\u06cc\u06cc\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0648\u0631\u062f \u062e\u0627\u0635\u060c \u06af\u0632\u06cc\u0646\u0647\u200c\u0627\u06cc \u0628\u0647 \u062f\u0633\u062a\u0648\u0631 \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f mysqld \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 Docker Image\u2014which \u0633\u0631\u0648\u0631 MySQL \u0631\u0627 \u0631\u0648\u06cc \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0634\u0631\u0648\u0639 \u0645\u06cc\u200c\u06a9\u0646\u062f\u2014\u0627\u0636\u0627\u0641\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f. \u0627\u06cc\u0646 \u06af\u0632\u06cc\u0646\u0647 \u06cc\u0639\u0646\u06cc <code>--default-authentication-plugin=mysql_native_password<\/code>\u060c \u0645\u062a\u063a\u06cc\u0631 \u0633\u06cc\u0633\u062a\u0645\u06cc authentication-plugin&#8211; \u0631\u0627 \u0631\u0648\u06cc mysql_native_password \u062a\u0646\u0638\u06cc\u0645 \u0645\u06cc\u200c\u06a9\u0646\u062f\u061b \u06a9\u0647 \u062a\u0639\u06cc\u06cc\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u062f\u0627\u0645 \u0633\u0627\u0632\u0648\u06a9\u0627\u0631 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0628\u0627\u06cc\u062f \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u062c\u062f\u06cc\u062f \u0628\u0647 \u0633\u0631\u0648\u0631 \u0631\u0627 \u0627\u062f\u0627\u0631\u0647 \u06a9\u0646\u062f. \u0686\u0648\u0646 PHP\u2014and \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 Image \u0648\u0631\u062f\u067e\u0631\u0633 \u0634\u0645\u0627\u2014\u067e\u06cc\u0634\u200c\u0641\u0631\u0636\u0650 \u062c\u062f\u06cc\u062f\u062a\u0631\u0650 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a MySQL \u0631\u0627 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0646\u0645\u06cc\u200c\u06a9\u0646\u062f\u060c \u0628\u0627\u06cc\u062f \u0627\u06cc\u0646 \u062a\u0646\u0638\u06cc\u0645 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u0628\u062f\u0647\u06cc\u062f \u062a\u0627 \u06a9\u0627\u0631\u0628\u0631 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u200c\u062a\u0627\u0646 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0634\u0648\u062f.<\/li>\n\n\n\n<li><strong>networks:<\/strong> \u0627\u06cc\u0646 \u062a\u0639\u06cc\u06cc\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u0647 \u0633\u0631\u0648\u06cc\u0633 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u200c\u062a\u0627\u0646 \u0628\u0647 \u0634\u0628\u06a9\u0647 app-network\u2014\u06a9\u0647 \u062f\u0631 \u067e\u0627\u06cc\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u062a\u0639\u0631\u06cc\u0641 \u062e\u0648\u0627\u0647\u06cc\u062f \u06a9\u0631\u062f\u2014\u0628\u067e\u06cc\u0648\u0646\u062f\u062f.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f\u060c \u0632\u06cc\u0631 \u062a\u0639\u0631\u06cc\u0641 \u0633\u0631\u0648\u06cc\u0633 db\u060c \u062a\u0639\u0631\u06cc\u0641 \u0633\u0631\u0648\u06cc\u0633 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0648\u0631\u062f\u067e\u0631\u0633 \u062e\u0648\u062f\u062a\u0627\u0646 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>~\/wordpress\/docker-compose.yml<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>...\n  wordpress:\n    depends_on:\n      - db\n    image: wordpress:5.1.1-fpm-alpine\n    container_name: wordpress\n    restart: unless-stopped\n    env_file: .env\n    environment:\n      - WORDPRESS_DB_HOST=db:3306\n      - WORDPRESS_DB_USER=$MYSQL_USER\n      - WORDPRESS_DB_PASSWORD=$MYSQL_PASSWORD\n      - WORDPRESS_DB_NAME=wordpress\n    volumes:\n      - wordpress:\/var\/www\/html\n    networks:\n      - app-network<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0627\u06cc\u0646 \u062a\u0639\u0631\u06cc\u0641 \u0633\u0631\u0648\u06cc\u0633\u060c \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0631\u0627 \u0646\u0627\u0645\u200c\u06af\u0630\u0627\u0631\u06cc \u0648 \u0633\u06cc\u0627\u0633\u062a \u0631\u06cc\u200c\u0627\u0633\u062a\u0627\u0631\u062a \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f\u2014\u0645\u062b\u0644 \u06a9\u0627\u0631\u06cc \u06a9\u0647 \u0628\u0627 \u0633\u0631\u0648\u06cc\u0633 db \u06a9\u0631\u062f\u06cc\u062f. \u0647\u0645\u200c\u0686\u0646\u06cc\u0646 \u0628\u0631\u062e\u06cc \u06af\u0632\u06cc\u0646\u0647\u200c\u0647\u0627\u06cc \u062e\u0627\u0635 \u0627\u06cc\u0646 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>depends_on:<\/strong> \u0627\u06cc\u0646 \u06af\u0632\u06cc\u0646\u0647 \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc\u200c\u062a\u0627\u0646 \u0628\u0647 \u062a\u0631\u062a\u06cc\u0628 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0634\u0631\u0648\u0639 \u0634\u0648\u0646\u062f\u061b \u0628\u0627 \u0634\u0631\u0648\u0639 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 wordpress \u0628\u0639\u062f \u0627\u0632 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 db. \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0648\u0631\u062f\u067e\u0631\u0633 \u0634\u0645\u0627 \u0628\u0647 \u0648\u062c\u0648\u062f \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0648 \u06a9\u0627\u0631\u0628\u0631\u0650 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0648\u0627\u0628\u0633\u062a\u0647 \u0627\u0633\u062a\u061b \u067e\u0633 \u0628\u06cc\u0627\u0646 \u0627\u06cc\u0646 \u062a\u0631\u062a\u06cc\u0628 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0627\u0645\u06a9\u0627\u0646 \u0634\u0631\u0648\u0639 \u062f\u0631\u0633\u062a \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0631\u0627 \u0645\u06cc\u200c\u062f\u0647\u062f.<\/li>\n\n\n\n<li><strong>image:<\/strong> \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc\u060c \u0627\u0632 Image \u06cc\u0639\u0646\u06cc <code>5.1.1-fpm-alpine<\/code> \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0648\u0631\u062f\u067e\u0631\u0633 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f. \u0647\u0645\u0627\u0646\u200c\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u06af\u0627\u0645 \u06f1 \u0628\u062d\u062b \u0634\u062f\u060c \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u06cc\u0646 image \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u200c\u062a\u0627\u0646 \u067e\u0631\u062f\u0627\u0632\u0634\u06af\u0631 php-fpm \u0644\u0627\u0632\u0645\u0650 Nginx \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u067e\u0631\u062f\u0627\u0632\u0634 PHP \u0631\u0627 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f. \u0627\u06cc\u0646 \u0647\u0645\u200c\u0686\u0646\u06cc\u0646 image\u0627\u06cc Alpine \u0627\u0633\u062a\u2014\u0645\u0634\u062a\u0642\u200c\u06af\u0631\u0641\u062a\u0647 \u0627\u0632 \u067e\u0631\u0648\u0698\u0647 Alpine Linux\u2014\u06a9\u0647 \u06a9\u0645\u06a9 \u0645\u06cc\u200c\u06a9\u0646\u062f \u062d\u062c\u0645 \u06a9\u0644\u06cc image\u200c\u062a\u0627\u0646 \u067e\u0627\u06cc\u06cc\u0646 \u0628\u0645\u0627\u0646\u062f.<\/li>\n\n\n\n<li><strong>env_file:<\/strong> \u062f\u0648\u0628\u0627\u0631\u0647\u060c \u062a\u0639\u06cc\u06cc\u0646 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u062f \u0645\u0642\u0627\u062f\u06cc\u0631 \u0631\u0627 \u0627\u0632 \u0641\u0627\u06cc\u0644 <code>.env<\/code> \u0628\u06a9\u0634\u06cc\u062f\u061b \u0686\u0648\u0646 \u0627\u06cc\u0646\u062c\u0627 \u06a9\u0627\u0631\u0628\u0631 \u0648 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u200c\u062a\u0627\u0646 \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0631\u062f\u06cc\u062f.<\/li>\n\n\n\n<li><strong>environment:<\/strong> \u0627\u06cc\u0646\u062c\u0627\u060c \u0627\u0632 \u0645\u0642\u0627\u062f\u06cc\u0631 \u062a\u0639\u0631\u06cc\u0641\u200c\u0634\u062f\u0647 \u062f\u0631 \u0641\u0627\u06cc\u0644 <code>.env<\/code> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0645\u0627 \u0622\u0646\u200c\u0647\u0627 \u0631\u0627 \u0628\u0647 \u0646\u0627\u0645\u200c\u0647\u0627\u06cc \u0645\u062a\u063a\u06cc\u0631\u06cc \u06a9\u0647 Image \u0648\u0631\u062f\u067e\u0631\u0633 \u0627\u0646\u062a\u0638\u0627\u0631 \u062f\u0627\u0631\u062f \u062a\u062e\u0635\u06cc\u0635 \u0645\u06cc\u200c\u062f\u0647\u06cc\u062f: WORDPRESS_DB_USER \u0648 WORDPRESS_DB_PASSWORD. \u0647\u0645\u200c\u0686\u0646\u06cc\u0646 WORDPRESS_DB_HOST\u0627\u06cc \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0633\u0631\u0648\u0631 MySQL\u0650 \u0627\u062c\u0631\u0627\u0634\u062f\u0647 \u0631\u0648\u06cc \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 db\u2014\u0642\u0627\u0628\u0644 \u062f\u0633\u062a\u0631\u0633 \u0631\u0648\u06cc \u067e\u0648\u0631\u062a \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 MySQL \u06cc\u0639\u0646\u06cc 3306\u2014\u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f. WORDPRESS_DB_NAME \u0634\u0645\u0627 \u0647\u0645\u0627\u0646 \u0645\u0642\u062f\u0627\u0631\u06cc \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f \u06a9\u0647 \u062f\u0631 \u062a\u0639\u0631\u06cc\u0641 \u0633\u0631\u0648\u06cc\u0633 MySQL \u0628\u0631\u0627\u06cc MYSQL_DATABASE \u062a\u0639\u06cc\u06cc\u0646 \u06a9\u0631\u062f\u06cc\u062f: wordpress.<\/li>\n\n\n\n<li><strong>volumes:<\/strong> Volume \u0646\u0627\u0645\u200c\u062f\u0627\u0631\u06cc \u0628\u0647 \u0646\u0627\u0645 wordpress \u0631\u0627 \u0628\u0647 Mount Point \u06cc\u0639\u0646\u06cc <code>\/var\/www\/html<\/code>\u2014\u0633\u0627\u062e\u062a\u0647\u200c\u0634\u062f\u0647 \u062a\u0648\u0633\u0637 Image \u0648\u0631\u062f\u067e\u0631\u0633\u2014Mount \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f. \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Volume \u0646\u0627\u0645\u200c\u062f\u0627\u0631 \u0628\u0647 \u0627\u06cc\u0646 \u0634\u06a9\u0644 \u0628\u0647 \u0634\u0645\u0627 \u0627\u062c\u0627\u0632\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u06a9\u062f \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u200c\u062a\u0627\u0646 \u0628\u0627 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc \u062f\u06cc\u06af\u0631 \u0631\u0627 \u0645\u06cc\u200c\u062f\u0647\u062f.<\/li>\n\n\n\n<li><strong>networks:<\/strong> \u0647\u0645\u200c\u0686\u0646\u06cc\u0646 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 wordpress \u0631\u0627 \u0628\u0647 \u0634\u0628\u06a9\u0647 app-network \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f\u060c \u0632\u06cc\u0631 \u062a\u0639\u0631\u06cc\u0641 \u0633\u0631\u0648\u06cc\u0633 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0648\u0631\u062f\u067e\u0631\u0633\u060c \u062a\u0639\u0631\u06cc\u0641 \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0633\u0631\u0648\u06cc\u0633 Nginx \u06cc\u0639\u0646\u06cc webserver \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>~\/wordpress\/docker-compose.yml<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>...\n  webserver:\n    depends_on:\n      - wordpress\n    image: nginx:1.15.12-alpine\n    container_name: webserver\n    restart: unless-stopped\n    ports:\n      - \"80:80\"\n    volumes:\n      - wordpress:\/var\/www\/html\n      - .\/nginx-conf:\/etc\/nginx\/conf.d\n      - certbot-etc:\/etc\/letsencrypt\n    networks:\n      - app-network<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646\u062c\u0627\u060c \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0631\u0627 \u0646\u0627\u0645\u200c\u06af\u0630\u0627\u0631\u06cc \u0648 \u062f\u0631 \u062a\u0631\u062a\u06cc\u0628 \u0634\u0631\u0648\u0639 \u0628\u0647 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 wordpress \u0648\u0627\u0628\u0633\u062a\u0647\u200c\u0627\u0634 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f. \u0647\u0645\u200c\u0686\u0646\u06cc\u0646 \u0627\u0632 image\u0627\u06cc Alpine\u2014\u06cc\u0639\u0646\u06cc <code>1.15.12-alpine<\/code> \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 Nginx\u2014\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u062a\u0639\u0631\u06cc\u0641 \u0633\u0631\u0648\u06cc\u0633 \u0647\u0645\u200c\u0686\u0646\u06cc\u0646 \u0634\u0627\u0645\u0644 \u06af\u0632\u06cc\u0646\u0647\u200c\u0647\u0627\u06cc \u0632\u06cc\u0631 \u0627\u0633\u062a:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>ports:<\/strong> \u0627\u06cc\u0646 \u067e\u0648\u0631\u062a 80 \u0631\u0627 \u0627\u0641\u0634\u0627 \u0645\u06cc\u200c\u06a9\u0646\u062f \u062a\u0627 \u06af\u0632\u06cc\u0646\u0647\u200c\u0647\u0627\u06cc \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc\u200c\u0627\u06cc \u06a9\u0647 \u062f\u0631 \u0641\u0627\u06cc\u0644 nginx.conf \u062f\u0631 \u06af\u0627\u0645 \u06f1 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0631\u062f\u06cc\u062f \u0641\u0639\u0627\u0644 \u0634\u0648\u0646\u062f.<\/li>\n\n\n\n<li><strong>volumes:<\/strong> \u0627\u06cc\u0646\u062c\u0627\u060c \u062a\u0631\u06a9\u06cc\u0628\u06cc \u0627\u0632 Volume\u0647\u0627\u06cc \u0646\u0627\u0645\u200c\u062f\u0627\u0631 \u0648 Bind Mount\u0647\u0627 \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f:\n<ul class=\"wp-block-list\">\n<li><code>wordpress:\/var\/www\/html<\/code>: \u0627\u06cc\u0646 \u06a9\u062f \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0648\u0631\u062f\u067e\u0631\u0633 \u0634\u0645\u0627 \u0631\u0627 \u0628\u0647 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc <code>\/var\/www\/html<\/code>\u2014\u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc\u200c\u0627\u06cc \u06a9\u0647 \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 root \u062f\u0631 Server Block \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 Nginx \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0631\u062f\u06cc\u062f\u2014Mount \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n\n\n\n<li><code>.\/nginx-conf:\/etc\/nginx\/conf.d<\/code>: \u0627\u06cc\u0646 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc Nginx \u0631\u0648\u06cc \u0647\u0627\u0633\u062a \u0631\u0627 \u0628\u0647 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0645\u0631\u0628\u0648\u0637\u0647 \u0631\u0648\u06cc \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 Bind Mount \u0645\u06cc\u200c\u06a9\u0646\u062f\u061b \u0648 \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0647\u0631 \u062a\u063a\u06cc\u06cc\u0631\u06cc \u06a9\u0647 \u062f\u0631 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0647\u0627\u0633\u062a \u0628\u062f\u0647\u06cc\u062f \u062f\u0631 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0645\u0646\u0639\u06a9\u0633 \u0634\u0648\u062f.<\/li>\n\n\n\n<li><code>certbot-etc:\/etc\/letsencrypt<\/code>: \u0627\u06cc\u0646 \u06af\u0648\u0627\u0647\u06cc\u200c\u0647\u0627 \u0648 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0645\u0631\u0628\u0648\u0637\u0647 Let&#8217;s Encrypt \u0628\u0631\u0627\u06cc \u062f\u0627\u0645\u0646\u0647\u200c\u062a\u0627\u0646 \u0631\u0627 \u0628\u0647 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0645\u0646\u0627\u0633\u0628 \u0631\u0648\u06cc \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 Mount \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0645\u200c\u0686\u0646\u06cc\u0646 \u0627\u06cc\u0646 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0631\u0627 \u0628\u0647 \u0634\u0628\u06a9\u0647 app-network \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0646\u0647\u0627\u06cc\u062a\u060c \u0632\u06cc\u0631 \u062a\u0639\u0631\u06cc\u0641 webserver \u062e\u0648\u062f\u062a\u0627\u0646\u060c \u0622\u062e\u0631\u06cc\u0646 \u062a\u0639\u0631\u06cc\u0641 \u0633\u0631\u0648\u06cc\u0633 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0633\u0631\u0648\u06cc\u0633 certbot \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f. \u062d\u062a\u0645\u0627\u064b \u0622\u062f\u0631\u0633 \u0627\u06cc\u0645\u06cc\u0644 \u0648 \u0646\u0627\u0645\u200c\u0647\u0627\u06cc \u062f\u0627\u0645\u0646\u0647 \u0641\u0647\u0631\u0633\u062a\u200c\u0634\u062f\u0647 \u0627\u06cc\u0646\u062c\u0627 \u0631\u0627 \u0628\u0627 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062e\u0648\u062f\u062a\u0627\u0646 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>~\/wordpress\/docker-compose.yml<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"> <code> certbot:\n    depends_on:\n      - webserver\n    image: certbot\/certbot\n    container_name: certbot\n    volumes:\n      - certbot-etc:\/etc\/letsencrypt\n      - wordpress:\/var\/www\/html\n    command: certonly --webroot --webroot-path=\/var\/www\/html --email sammy@your_domain --agree-tos --no-eff-email --staging -d your_domain -d www.your_domain<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u062a\u0639\u0631\u06cc\u0641 \u0628\u0647 Compose \u0645\u06cc\u200c\u06af\u0648\u06cc\u062f Image \u06cc\u0639\u0646\u06cc certbot\/certbot \u0631\u0627 \u0627\u0632 Docker Hub \u0628\u06a9\u0634\u062f. \u0647\u0645\u200c\u0686\u0646\u06cc\u0646 \u0627\u0632 Volume\u0647\u0627\u06cc \u0646\u0627\u0645\u200c\u062f\u0627\u0631 \u0628\u0631\u0627\u06cc \u0627\u0634\u062a\u0631\u0627\u06a9 \u0645\u0646\u0627\u0628\u0639 \u0628\u0627 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 Nginx\u2014including \u06af\u0648\u0627\u0647\u06cc\u200c\u0647\u0627\u06cc \u062f\u0627\u0645\u0646\u0647 \u0648 \u06a9\u0644\u06cc\u062f \u062f\u0631 certbot-etc \u0648 \u06a9\u062f \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u062f\u0631 wordpress\u2014\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0648\u0628\u0627\u0631\u0647\u060c \u0627\u0632 depends_on \u0628\u0631\u0627\u06cc \u062a\u0639\u06cc\u06cc\u0646 \u0627\u06cc\u0646\u06a9\u0647 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 certbot \u0628\u0627\u06cc\u062f \u0648\u0642\u062a\u06cc \u0633\u0631\u0648\u06cc\u0633 webserver \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627\u0633\u062a \u0634\u0631\u0648\u0639 \u0634\u0648\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0645\u200c\u0686\u0646\u06cc\u0646 \u06af\u0632\u06cc\u0646\u0647 command\u0627\u06cc \u0634\u0627\u0645\u0644 \u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u062f \u06a9\u0647 \u0632\u06cc\u0631\u062f\u0633\u062a\u0648\u0631\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627 \u0628\u0627 \u062f\u0633\u062a\u0648\u0631 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 certbot \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u062a\u0639\u06cc\u06cc\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0632\u06cc\u0631\u062f\u0633\u062a\u0648\u0631 certonly \u06af\u0648\u0627\u0647\u06cc\u200c\u0627\u06cc \u0631\u0627 \u0628\u0627 \u06af\u0632\u06cc\u0646\u0647\u200c\u0647\u0627\u06cc \u0632\u06cc\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u062f:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>&#8211;webroot:<\/strong> \u0628\u0647 Certbot \u0645\u06cc\u200c\u06af\u0648\u06cc\u062f \u0627\u0632 \u067e\u0644\u0627\u06af\u06cc\u0646 webroot \u0628\u0631\u0627\u06cc \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u0646 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627 \u062f\u0631 \u067e\u0648\u0634\u0647 webroot \u0628\u0631\u0627\u06cc \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u062f. \u0627\u06cc\u0646 \u067e\u0644\u0627\u06af\u06cc\u0646 \u0628\u0647 \u0631\u0648\u0634 \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc HTTP-01 \u0648\u0627\u0628\u0633\u062a\u0647 \u0627\u0633\u062a\u061b \u06a9\u0647 \u0627\u0632 \u062f\u0631\u062e\u0648\u0627\u0633\u062a HTTP \u0628\u0631\u0627\u06cc \u0627\u062b\u0628\u0627\u062a \u0627\u06cc\u0646\u06a9\u0647 Certbot \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0627\u0632 \u0633\u0631\u0648\u0631\u06cc \u06a9\u0647 \u0628\u0647 \u0646\u0627\u0645 \u062f\u0627\u0645\u0646\u0647 \u062f\u0627\u062f\u0647\u200c\u0627\u06cc \u067e\u0627\u0633\u062e \u0645\u06cc\u200c\u062f\u0647\u062f \u0628\u0647 \u0645\u0646\u0627\u0628\u0639 \u062f\u0633\u062a\u0631\u0633\u06cc \u067e\u06cc\u062f\u0627 \u06a9\u0646\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n\n\n\n<li><strong>&#8211;webroot-path:<\/strong> \u0645\u0633\u06cc\u0631 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc webroot \u0631\u0627 \u062a\u0639\u06cc\u06cc\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n\n\n\n<li><strong>&#8211;email:<\/strong> \u0627\u06cc\u0645\u06cc\u0644 \u0645\u0648\u0631\u062f \u0639\u0644\u0627\u0642\u0647 \u0628\u0631\u0627\u06cc \u062b\u0628\u062a \u0648 \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc.<\/li>\n\n\n\n<li><strong>&#8211;agree-tos:<\/strong> \u062a\u0639\u06cc\u06cc\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0628\u0627 \u062a\u0648\u0627\u0641\u0642\u200c\u0646\u0627\u0645\u0647 Subscriber \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 ACME \u0645\u0648\u0627\u0641\u0642\u06cc\u062f.<\/li>\n\n\n\n<li><strong>&#8211;no-eff-email:<\/strong> \u0628\u0647 Certbot \u0645\u06cc\u200c\u06af\u0648\u06cc\u062f \u06a9\u0647 \u0646\u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u062f \u0627\u06cc\u0645\u06cc\u0644\u200c\u062a\u0627\u0646 \u0631\u0627 \u0628\u0627 \u0628\u0646\u06cc\u0627\u062f \u0645\u0631\u0632\u0647\u0627\u06cc \u0627\u0644\u06a9\u062a\u0631\u0648\u0646\u06cc\u06a9\u06cc (EFF) \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u0628\u06af\u0630\u0627\u0631\u06cc\u062f. \u0627\u06af\u0631 \u062a\u0631\u062c\u06cc\u062d \u0645\u06cc\u200c\u062f\u0647\u06cc\u062f\u060c \u0622\u0632\u0627\u062f\u06cc\u062f \u062d\u0630\u0641\u0634 \u06a9\u0646\u06cc\u062f.<\/li>\n\n\n\n<li><strong>&#8211;staging:<\/strong> \u0628\u0647 Certbot \u0645\u06cc\u200c\u06af\u0648\u06cc\u062f \u06a9\u0647 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u062f \u0627\u0632 \u0645\u062d\u06cc\u0637 staging \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 Let&#8217;s Encrypt \u0628\u0631\u0627\u06cc \u06af\u0631\u0641\u062a\u0646 \u06af\u0648\u0627\u0647\u06cc\u200c\u0647\u0627\u06cc \u062a\u0633\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f. \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u06cc\u0646 \u06af\u0632\u06cc\u0646\u0647 \u0628\u0647 \u0634\u0645\u0627 \u0627\u062c\u0627\u0632\u0647 \u062a\u0633\u062a \u06af\u0632\u06cc\u0646\u0647\u200c\u0647\u0627\u06cc \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc\u200c\u062a\u0627\u0646 \u0648 \u0627\u062c\u062a\u0646\u0627\u0628 \u0627\u0632 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a\u200c\u0647\u0627\u06cc \u0627\u062d\u062a\u0645\u0627\u0644\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062f\u0627\u0645\u0646\u0647 \u0631\u0627 \u0645\u06cc\u200c\u062f\u0647\u062f.<\/li>\n\n\n\n<li><strong>-d:<\/strong> \u0628\u0647 \u0634\u0645\u0627 \u0627\u062c\u0627\u0632\u0647 \u062a\u0639\u06cc\u06cc\u0646 \u0646\u0627\u0645\u200c\u0647\u0627\u06cc \u062f\u0627\u0645\u0646\u0647\u200c\u0627\u06cc \u06a9\u0647 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u062f \u0628\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u062a\u0627\u0646 \u0627\u0639\u0645\u0627\u0644 \u0634\u0648\u0646\u062f \u0631\u0627 \u0645\u06cc\u200c\u062f\u0647\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0648\u0631\u062f\u060c your_domain \u0648 <a href=\"http:\/\/www.your_domain\">www.your_domain<\/a> \u0631\u0627 \u0634\u0627\u0645\u0644 \u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u062f. \u062d\u062a\u0645\u0627\u064b \u0627\u06cc\u0646\u200c\u0647\u0627 \u0631\u0627 \u0628\u0627 \u062f\u0627\u0645\u0646\u0647 \u062e\u0648\u062f\u062a\u0627\u0646 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06a9\u0646\u06cc\u062f.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0632\u06cc\u0631 \u062a\u0639\u0631\u06cc\u0641 \u0633\u0631\u0648\u06cc\u0633 certbot\u060c \u062a\u0639\u0627\u0631\u06cc\u0641 \u0634\u0628\u06a9\u0647 \u0648 Volume \u062e\u0648\u062f\u062a\u0627\u0646 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>~\/wordpress\/docker-compose.yml<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>...\nvolumes:\n  certbot-etc:\n  wordpress:\n  dbdata:\n\nnetworks:\n  app-network:\n    driver: bridge<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u06a9\u0644\u06cc\u062f volumes \u0633\u0637\u062d-\u0628\u0627\u0644\u0627 \u0634\u0645\u0627\u060c Volume\u0647\u0627\u06cc certbot-etc\u060c wordpress \u0648 dbdata \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0648\u0642\u062a\u06cc \u062f\u0627\u06a9\u0631 Volume\u0647\u0627 \u0631\u0627 \u0645\u06cc\u200c\u0633\u0627\u0632\u062f\u060c \u0645\u062d\u062a\u0648\u0627\u06cc Volume \u062f\u0631 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc\u200c\u0627\u06cc \u0631\u0648\u06cc \u0641\u0627\u06cc\u0644\u200c\u0633\u06cc\u0633\u062a\u0645 \u0647\u0627\u0633\u062a \u06cc\u0639\u0646\u06cc <code>\/var\/lib\/docker\/volumes\/<\/code>\u2014\u06a9\u0647 \u062a\u0648\u0633\u0637 \u062f\u0627\u06a9\u0631 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc\u200c\u0634\u0648\u062f\u2014\u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f. \u0645\u062d\u062a\u0648\u0627\u06cc \u0647\u0631 Volume \u0633\u067e\u0633 \u0627\u0632 \u0627\u06cc\u0646 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0628\u0647 \u0647\u0631 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u06cc \u06a9\u0647 \u0627\u0632 Volume \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f Mount \u0645\u06cc\u200c\u0634\u0648\u062f. \u0628\u0647 \u0627\u06cc\u0646 \u0634\u06a9\u0644\u060c \u0627\u0634\u062a\u0631\u0627\u06a9 \u06a9\u062f \u0648 \u062f\u0627\u062f\u0647 \u0628\u06cc\u0646 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0634\u0628\u06a9\u0647 Bridge \u062a\u0639\u0631\u06cc\u0641\u200c\u0634\u062f\u0647-\u062a\u0648\u0633\u0637-\u06a9\u0627\u0631\u0628\u0631 \u06cc\u0639\u0646\u06cc app-network\u060c \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u06cc\u0646 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc \u0634\u0645\u0627 \u0631\u0627 \u0645\u0645\u06a9\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f\u061b \u0686\u0648\u0646 \u0631\u0648\u06cc \u0647\u0645\u0627\u0646 \u0647\u0627\u0633\u062a Docker Daemon \u0647\u0633\u062a\u0646\u062f. \u0627\u06cc\u0646 \u062a\u0631\u0627\u0641\u06cc\u06a9 \u0648 \u0627\u0631\u062a\u0628\u0627\u0637 \u062f\u0631\u0648\u0646 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0631\u0627 \u0633\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f\u061b \u0686\u0648\u0646 \u0647\u0645\u0647 \u067e\u0648\u0631\u062a\u200c\u0647\u0627 \u0628\u06cc\u0646 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc \u0631\u0648\u06cc \u0647\u0645\u0627\u0646 \u0634\u0628\u06a9\u0647 Bridge \u0631\u0627\u2014\u0628\u062f\u0648\u0646 \u0627\u0641\u0634\u0627\u06cc \u0647\u06cc\u0686 \u067e\u0648\u0631\u062a\u06cc \u0628\u0647 \u062f\u0646\u06cc\u0627\u06cc \u0628\u06cc\u0631\u0648\u0646\u2014\u0628\u0627\u0632 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0628\u062f\u06cc\u0646 \u062a\u0631\u062a\u06cc\u0628\u060c \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc db\u060c wordpress \u0648 webserver \u0634\u0645\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u0628\u0627 \u0647\u0645 \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0631\u0642\u0631\u0627\u0631 \u06a9\u0646\u0646\u062f\u061b \u0648 \u0634\u0645\u0627 \u0641\u0642\u0637 \u0644\u0627\u0632\u0645 \u0627\u0633\u062a \u067e\u0648\u0631\u062a 80 \u0631\u0627 \u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u0641\u0631\u0627\u0646\u062a-\u0627\u0646\u062f \u0628\u0647 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0627\u0641\u0634\u0627 \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0632\u06cc\u0631\u060c \u0641\u0627\u06cc\u0644 docker-compose.yml \u0628\u0647\u200c\u0637\u0648\u0631 \u06a9\u0627\u0645\u0644 \u0622\u0645\u062f\u0647:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>~\/wordpress\/docker-compose.yml<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>version: '3'\n\nservices:\n  db:\n    image: mysql:8.0\n    container_name: db\n    restart: unless-stopped\n    env_file: .env\n    environment:\n      - MYSQL_DATABASE=wordpress\n    volumes:\n      - dbdata:\/var\/lib\/mysql\n    command: '--default-authentication-plugin=mysql_native_password'\n    networks:\n      - app-network\n\n  wordpress:\n    depends_on:\n      - db\n    image: wordpress:5.1.1-fpm-alpine\n    container_name: wordpress\n    restart: unless-stopped\n    env_file: .env\n    environment:\n      - WORDPRESS_DB_HOST=db:3306\n      - WORDPRESS_DB_USER=$MYSQL_USER\n      - WORDPRESS_DB_PASSWORD=$MYSQL_PASSWORD\n      - WORDPRESS_DB_NAME=wordpress\n    volumes:\n      - wordpress:\/var\/www\/html\n    networks:\n      - app-network\n\n  webserver:\n    depends_on:\n      - wordpress\n    image: nginx:1.15.12-alpine\n    container_name: webserver\n    restart: unless-stopped\n    ports:\n      - \"80:80\"\n    volumes:\n      - wordpress:\/var\/www\/html\n      - .\/nginx-conf:\/etc\/nginx\/conf.d\n      - certbot-etc:\/etc\/letsencrypt\n    networks:\n      - app-network\n\n  certbot:\n    depends_on:\n      - webserver\n    image: certbot\/certbot\n    container_name: certbot\n    volumes:\n      - certbot-etc:\/etc\/letsencrypt\n      - wordpress:\/var\/www\/html\n    command: certonly --webroot --webroot-path=\/var\/www\/html --email sammy@your_domain --agree-tos --no-eff-email --staging -d your_domain -d www.your_domain\n\nvolumes:\n  certbot-etc:\n  wordpress:\n  dbdata:\n\nnetworks:\n  app-network:\n    driver: bridge<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0642\u062a\u06cc \u0648\u06cc\u0631\u0627\u06cc\u0634 \u062a\u0645\u0627\u0645 \u0634\u062f \u0641\u0627\u06cc\u0644 \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u0648 \u0628\u0628\u0646\u062f\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0627 \u0628\u0631\u0642\u0631\u0627\u0631\u06cc \u062a\u0639\u0627\u0631\u06cc\u0641 \u0633\u0631\u0648\u06cc\u0633\u200c\u062a\u0627\u0646\u060c \u0622\u0645\u0627\u062f\u0647 \u0634\u0631\u0648\u0639 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627 \u0648 \u062a\u0633\u062a \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u06af\u0648\u0627\u0647\u06cc\u200c\u062a\u0627\u0646 \u0647\u0633\u062a\u06cc\u062f.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u06af\u0627\u0645 \u06f4 \u2014 \u062f\u0631\u06cc\u0627\u0641\u062a \u06af\u0648\u0627\u0647\u06cc\u200c\u0647\u0627\u06cc SSL<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc\u200c\u062a\u0627\u0646 \u0631\u0627 \u0628\u0627 \u062f\u0633\u062a\u0648\u0631 <code>docker-compose up<\/code> \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u062f\u061b \u06a9\u0647 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc\u200c\u062a\u0627\u0646 \u0631\u0627 \u0628\u0647 \u062a\u0631\u062a\u06cc\u0628\u06cc \u06a9\u0647 \u062a\u0639\u06cc\u06cc\u0646 \u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u062f \u0645\u06cc\u200c\u0633\u0627\u0632\u062f \u0648 \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0628\u0627 \u0627\u0641\u0632\u0648\u062f\u0646 \u0641\u0644\u06af <code>-d<\/code>\u060c \u062f\u0633\u062a\u0648\u0631 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc db\u060c wordpress \u0648 webserver \u0631\u0627 \u062f\u0631 \u067e\u0633\u200c\u0632\u0645\u06cc\u0646\u0647 \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u06a9\u0646\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker-compose up -d<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062e\u0631\u0648\u062c\u06cc \u0632\u06cc\u0631 \u0645\u0648\u0641\u0642 \u0633\u0627\u062e\u062a\u0647\u200c\u0634\u062f\u0646 \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc\u200c\u062a\u0627\u0646 \u0631\u0627 \u062a\u0623\u06cc\u06cc\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Output\nCreating db ... done\nCreating wordpress ... done\nCreating webserver ... done\nCreating certbot   ... done<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0627 <code>docker-compose ps<\/code>\u060c \u0648\u0636\u0639\u06cc\u062a \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc\u200c\u062a\u0627\u0646 \u0631\u0627 \u0686\u06a9 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker-compose ps<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0642\u062a\u06cc \u06a9\u0627\u0645\u0644 \u0634\u062f\u060c \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc db\u060c wordpress \u0648 webserver \u0634\u0645\u0627 Up \u062e\u0648\u0627\u0647\u0646\u062f \u0628\u0648\u062f \u0648 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 certbot \u0628\u0627 \u067e\u06cc\u0627\u0645 \u0648\u0636\u0639\u06cc\u062a 0 \u062e\u0627\u0631\u062c \u0634\u062f\u0647:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Output\n  Name                 Command               State           Ports\n-------------------------------------------------------------------------\ncertbot     certbot certonly --webroot ...   Exit 0\ndb          docker-entrypoint.sh --def ...   Up       3306\/tcp, 33060\/tcp\nwebserver   nginx -g daemon off;             Up       0.0.0.0:80-&gt;80\/tcp\nwordpress   docker-entrypoint.sh php-fpm     Up       9000\/tcp<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0631 \u0686\u06cc\u0632\u06cc \u063a\u06cc\u0631 \u0627\u0632 Up \u062f\u0631 \u0633\u062a\u0648\u0646 State \u0628\u0631\u0627\u06cc \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc db\u060c wordpress \u06cc\u0627 webserver\u2014\u06cc\u0627 \u0648\u0636\u0639\u06cc\u062a \u062e\u0631\u0648\u062c\u06cc \u063a\u06cc\u0631 \u0627\u0632 0 \u0628\u0631\u0627\u06cc \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 certbot\u2014\u06cc\u0639\u0646\u06cc \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0644\u0627\u0632\u0645 \u0628\u0627\u0634\u062f \u0644\u0627\u06af\u200c\u0647\u0627\u06cc \u0633\u0631\u0648\u06cc\u0633 \u0631\u0627 \u0628\u0627 \u062f\u0633\u062a\u0648\u0631 <code>docker-compose logs<\/code> \u0686\u06a9 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker-compose logs service_name<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0686\u06a9 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u06af\u0648\u0627\u0647\u06cc\u200c\u0647\u0627\u06cc\u200c\u062a\u0627\u0646 \u0628\u0647 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 webserver Mount \u0634\u062f\u0647\u200c\u0627\u0646\u062f \u0628\u0627 <code>docker-compose exec<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker-compose exec webserver ls -la \/etc\/letsencrypt\/live<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0642\u062a\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u06af\u0648\u0627\u0647\u06cc\u200c\u062a\u0627\u0646 \u0645\u0648\u0641\u0642 \u0634\u0648\u0646\u062f\u060c \u0627\u06cc\u0646 \u062e\u0631\u0648\u062c\u06cc \u0627\u0633\u062a:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Output\ntotal 16\ndrwx------    3 root     root          4096 May 10 15:45 .\ndrwxr-xr-x    9 root     root          4096 May 10 15:45 ..\n-rw-r--r--    1 root     root           740 May 10 15:45 README\ndrwxr-xr-x    2 root     root          4096 May 10 15:45 your_domain<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u06a9\u0647 \u0645\u06cc\u200c\u062f\u0627\u0646\u06cc\u062f \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u062a\u0627\u0646 \u0645\u0648\u0641\u0642 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u062a\u0639\u0631\u06cc\u0641 \u0633\u0631\u0648\u06cc\u0633 certbot \u0631\u0627 \u0628\u0631\u0627\u06cc \u062d\u0630\u0641 \u0641\u0644\u06af <code>--staging<\/code> \u0648\u06cc\u0631\u0627\u06cc\u0634 \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">docker-compose.yml \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nano docker-compose.yml<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u062e\u0634\u06cc \u0627\u0632 \u0641\u0627\u06cc\u0644 \u0628\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0633\u0631\u0648\u06cc\u0633 certbot \u0631\u0627 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u062f \u0648 \u0641\u0644\u06af <code>--staging<\/code> \u062f\u0631 \u06af\u0632\u06cc\u0646\u0647 command \u0631\u0627 \u0628\u0627 \u0641\u0644\u06af <code>--force-renewal<\/code> \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06a9\u0646\u06cc\u062f\u061b \u06a9\u0647 \u0628\u0647 Certbot \u0645\u06cc\u200c\u06af\u0648\u06cc\u062f \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u062f \u06af\u0648\u0627\u0647\u06cc \u062c\u062f\u06cc\u062f\u06cc \u0628\u0627 \u0647\u0645\u0627\u0646 \u062f\u0627\u0645\u0646\u0647\u200c\u0647\u0627\u06cc \u06af\u0648\u0627\u0647\u06cc \u0645\u0648\u062c\u0648\u062f \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u0646\u06cc\u062f. \u062f\u0631 \u0632\u06cc\u0631\u060c \u062a\u0639\u0631\u06cc\u0641 \u0633\u0631\u0648\u06cc\u0633 certbot \u0628\u0627 \u0641\u0644\u06af \u0628\u0647\u200c\u0631\u0648\u0632 \u0634\u062f\u0647 \u0622\u0645\u062f\u0647:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>~\/wordpress\/docker-compose.yml<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>...\n  certbot:\n    depends_on:\n      - webserver\n    image: certbot\/certbot\n    container_name: certbot\n    volumes:\n      - certbot-etc:\/etc\/letsencrypt\n      - certbot-var:\/var\/lib\/letsencrypt\n      - wordpress:\/var\/www\/html\n    command: certonly --webroot --webroot-path=\/var\/www\/html --email sammy@your_domain --agree-tos --no-eff-email --force-renewal -d your_domain -d www.your_domain\n...<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f <code>docker-compose up<\/code> \u0631\u0627 \u0628\u0631\u0627\u06cc \u0628\u0627\u0632\u0633\u0627\u0632\u06cc \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 certbot \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f. \u0647\u0645\u200c\u0686\u0646\u06cc\u0646 \u06af\u0632\u06cc\u0646\u0647 <code>--no-deps<\/code> \u0631\u0627 \u0634\u0627\u0645\u0644 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f \u062a\u0627 \u0628\u0647 Compose \u0628\u06af\u0648\u06cc\u06cc\u062f \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0634\u0631\u0648\u0639 \u0633\u0631\u0648\u06cc\u0633 webserver \u0631\u0627 \u0631\u062f \u06a9\u0646\u062f\u061b \u0686\u0648\u0646 \u0627\u0632 \u0642\u0628\u0644 \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627\u0633\u062a:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker-compose up --force-recreate --no-deps certbot<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062e\u0631\u0648\u062c\u06cc \u0632\u06cc\u0631 \u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06af\u0648\u0627\u0647\u06cc\u200c\u062a\u0627\u0646 \u0645\u0648\u0641\u0642 \u0628\u0648\u062f\u0647:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Output\nRecreating certbot ... done\nAttaching to certbot\ncertbot      | Saving debug log to \/var\/log\/letsencrypt\/letsencrypt.log\ncertbot      | Plugins selected: Authenticator webroot, Installer None\ncertbot      | Renewing an existing certificate\ncertbot      | Performing the following challenges:\ncertbot      | http-01 challenge for your_domain\ncertbot      | http-01 challenge for www.your_domain\ncertbot      | Using the webroot path \/var\/www\/html for all unmatched domains.\ncertbot      | Waiting for verification...\ncertbot      | Cleaning up challenges\ncertbot      | IMPORTANT NOTES:\ncertbot      |  - Congratulations! Your certificate and chain have been saved at:\ncertbot      |    \/etc\/letsencrypt\/live\/your_domain\/fullchain.pem\ncertbot      |    Your key file has been saved at:\ncertbot      |    \/etc\/letsencrypt\/live\/your_domain\/privkey.pem\n...\ncertbot exited with code 0<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0627 \u0628\u0631\u0642\u0631\u0627\u0631\u06cc \u06af\u0648\u0627\u0647\u06cc\u200c\u0647\u0627\u06cc\u200c\u062a\u0627\u0646\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647 \u062a\u063a\u06cc\u06cc\u0631 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc Nginx \u0628\u0631\u0627\u06cc \u0634\u0627\u0645\u0644 \u06a9\u0631\u062f\u0646 SSL \u0628\u0631\u0648\u06cc\u062f.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u06af\u0627\u0645 \u06f5 \u2014 \u062a\u063a\u06cc\u06cc\u0631 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0648 \u062a\u0639\u0631\u06cc\u0641 \u0633\u0631\u0648\u06cc\u0633 \u0648\u0628\u200c\u0633\u0631\u0648\u0631<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0639\u0627\u0644 \u06a9\u0631\u062f\u0646 SSL \u062f\u0631 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc Nginx \u0634\u0645\u0627 \u0634\u0627\u0645\u0644 \u0627\u0641\u0632\u0648\u062f\u0646 \u0631\u06cc\u062f\u0627\u06cc\u0631\u06a9\u062a HTTP \u0628\u0647 HTTPS\u060c \u062a\u0639\u06cc\u06cc\u0646 \u0645\u06a9\u0627\u0646\u200c\u0647\u0627\u06cc \u06af\u0648\u0627\u0647\u06cc \u0648 \u06a9\u0644\u06cc\u062f SSL \u0634\u0645\u0627\u060c \u0648 \u0627\u0641\u0632\u0648\u062f\u0646 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627 \u0648 \u0647\u062f\u0631\u0647\u0627\u06cc \u0627\u0645\u0646\u06cc\u062a\u06cc \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0686\u0648\u0646 \u0642\u0635\u062f \u0628\u0627\u0632\u0633\u0627\u0632\u06cc \u0633\u0631\u0648\u06cc\u0633 webserver \u0628\u0631\u0627\u06cc \u0634\u0627\u0645\u0644 \u06a9\u0631\u062f\u0646 \u0627\u06cc\u0646 \u0627\u0641\u0632\u0648\u062f\u0646\u06cc\u200c\u0647\u0627 \u0631\u0627 \u062f\u0627\u0631\u06cc\u062f\u060c \u0627\u0644\u0627\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0645\u062a\u0648\u0642\u0641\u0634 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker-compose stop webserver<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0642\u0628\u0644 \u0627\u0632 \u062a\u063a\u06cc\u06cc\u0631 \u0641\u0627\u06cc\u0644 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc\u060c \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u0627\u0645\u0646\u06cc\u062a\u06cc \u062a\u0648\u0635\u06cc\u0647\u200c\u0634\u062f\u0647 Nginx \u0631\u0627 \u0627\u0632 Certbot \u0628\u0627 curl \u0628\u06af\u06cc\u0631\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -sSLo nginx-conf\/options-ssl-nginx.conf https:\/\/raw.githubusercontent.com\/certbot\/certbot\/master\/certbot-nginx\/certbot_nginx\/_internal\/tls_configs\/options-ssl-nginx.conf<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u0627\u06cc\u0646 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627 \u0631\u0627 \u062f\u0631 \u0641\u0627\u06cc\u0644\u06cc \u0628\u0647 \u0646\u0627\u0645 options-ssl-nginx.conf\u2014\u0648\u0627\u0642\u0639 \u062f\u0631 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc nginx-conf\u2014\u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f\u060c \u0641\u0627\u06cc\u0644 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc Nginx\u0627\u06cc \u06a9\u0647 \u0642\u0628\u0644\u0627\u064b \u0633\u0627\u062e\u062a\u06cc\u062f \u0631\u0627 \u062d\u0630\u0641 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>rm nginx-conf\/nginx.conf<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0646\u0633\u062e\u0647 \u062f\u06cc\u06af\u0631\u06cc \u0627\u0632 \u0641\u0627\u06cc\u0644 \u0628\u0633\u0627\u0632\u06cc\u062f \u0648 \u0628\u0627\u0632\u0634 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nano nginx-conf\/nginx.conf<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u06a9\u062f \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0647 \u0641\u0627\u06cc\u0644 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f \u062a\u0627 HTTP \u0628\u0647 HTTPS \u0631\u06cc\u062f\u0627\u06cc\u0631\u06a9\u062a \u0648 \u0627\u0639\u062a\u0628\u0627\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u060c \u067e\u0631\u0648\u062a\u06a9\u0644\u200c\u0647\u0627 \u0648 \u0647\u062f\u0631\u0647\u0627\u06cc \u0627\u0645\u0646\u06cc\u062a\u06cc SSL \u0627\u0636\u0627\u0641\u0647 \u0634\u0648\u0646\u062f. \u06cc\u0627\u062f\u062a\u0627\u0646 \u0628\u0627\u0634\u062f your_domain \u0631\u0627 \u0628\u0627 \u062f\u0627\u0645\u0646\u0647 \u062e\u0648\u062f\u062a\u0627\u0646 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>~\/wordpress\/nginx-conf\/nginx.conf<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>server {\n        listen 80;\n        listen &#91;::]:80;\n\n        server_name your_domain www.your_domain;\n\n        location ~ \/.well-known\/acme-challenge {\n                allow all;\n                root \/var\/www\/html;\n        }\n\n        location \/ {\n                rewrite ^ https:\/\/$host$request_uri? permanent;\n        }\n}\n\nserver {\n        listen 443 ssl http2;\n        listen &#91;::]:443 ssl http2;\n        server_name your_domain www.your_domain;\n\n        index index.php index.html index.htm;\n\n        root \/var\/www\/html;\n\n        server_tokens off;\n\n        ssl_certificate \/etc\/letsencrypt\/live\/your_domain\/fullchain.pem;\n        ssl_certificate_key \/etc\/letsencrypt\/live\/your_domain\/privkey.pem;\n\n        include \/etc\/nginx\/conf.d\/options-ssl-nginx.conf;\n\n        add_header X-Frame-Options \"SAMEORIGIN\" always;\n        add_header X-XSS-Protection \"1; mode=block\" always;\n        add_header X-Content-Type-Options \"nosniff\" always;\n        add_header Referrer-Policy \"no-referrer-when-downgrade\" always;\n        add_header Content-Security-Policy \"default-src * data: 'unsafe-eval' 'unsafe-inline'\" always;\n        # add_header Strict-Transport-Security \"max-age=31536000; includeSubDomains; preload\" always;\n        # \u0641\u0642\u0637 \u0648\u0642\u062a\u06cc \u067e\u06cc\u0627\u0645\u062f\u0647\u0627\u06cc\u0634 \u0631\u0627 \u0645\u06cc\u200c\u0641\u0647\u0645\u06cc\u062f strict transport security \u0631\u0627 \u0641\u0639\u0627\u0644 \u06a9\u0646\u06cc\u062f\n\n        location \/ {\n                try_files $uri $uri\/ \/index.php$is_args$args;\n        }\n\n        location ~ \\.php$ {\n                try_files $uri =404;\n                fastcgi_split_path_info ^(.+\\.php)(\/.+)$;\n                fastcgi_pass wordpress:9000;\n                fastcgi_index index.php;\n                include fastcgi_params;\n                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;\n                fastcgi_param PATH_INFO $fastcgi_path_info;\n        }\n\n        location ~ \/\\.ht {\n                deny all;\n        }\n\n        location = \/favicon.ico {\n                log_not_found off; access_log off;\n        }\n        location = \/robots.txt {\n                log_not_found off; access_log off; allow all;\n        }\n        location ~* \\.(css|gif|ico|jpeg|jpg|js|png)$ {\n                expires max;\n                log_not_found off;\n        }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Server Block \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 HTTP\u060c webroot \u0628\u0631\u0627\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u062a\u0645\u062f\u06cc\u062f Certbot \u0628\u0647 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc acme-challenge\/.well-known \u0631\u0627 \u062a\u0639\u06cc\u06cc\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0647\u0645\u200c\u0686\u0646\u06cc\u0646 \u062f\u0627\u06cc\u0631\u06a9\u062a\u06cc\u0648 rewrite\u0627\u06cc \u0631\u0627 \u0634\u0627\u0645\u0644 \u0645\u06cc\u200c\u0634\u0648\u062f \u06a9\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc HTTP \u0628\u0647 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0631\u06cc\u0634\u0647 \u0631\u0627 \u0628\u0647 HTTPS \u0647\u062f\u0627\u06cc\u062a \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Server Block \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 HTTPS\u060c ssl \u0648 http2 \u0631\u0627 \u0641\u0639\u0627\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0628\u0631\u0627\u06cc \u062e\u0648\u0627\u0646\u062f\u0646 \u0628\u06cc\u0634\u062a\u0631 \u062f\u0631\u0628\u0627\u0631\u0647 \u0646\u062d\u0648\u0647 \u0627\u0631\u062a\u0642\u0627\u06cc HTTP\/2 \u0631\u0648\u06cc \u067e\u0631\u0648\u062a\u06a9\u0644\u200c\u0647\u0627\u06cc HTTP \u0648 \u0645\u0632\u0627\u06cc\u0627\u06cc\u06cc \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631\u0627\u06cc\u06cc \u0648\u0628\u200c\u0633\u0627\u06cc\u062a \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f\u060c \u0644\u0637\u0641\u0627\u064b \u0645\u0642\u062f\u0645\u0647 \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u00ab\u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc Nginx \u0628\u0627 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc HTTP\/2 \u0631\u0648\u06cc \u0627\u0648\u0628\u0648\u0646\u062a\u0648 22.04\u00bb \u062f\u0631 \u067e\u0627\u0631\u0645\u06cc\u0646 \u06a9\u0644\u0648\u062f \u0631\u0627 \u0628\u062e\u0648\u0627\u0646\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0628\u0644\u0627\u06a9 \u0647\u0645\u200c\u0686\u0646\u06cc\u0646 \u0645\u06a9\u0627\u0646\u200c\u0647\u0627\u06cc \u06af\u0648\u0627\u0647\u06cc \u0648 \u06a9\u0644\u06cc\u062f SSL \u0634\u0645\u0627\u2014\u0628\u0647\u200c\u0647\u0645\u0631\u0627\u0647 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u0627\u0645\u0646\u06cc\u062a\u06cc \u062a\u0648\u0635\u06cc\u0647\u200c\u0634\u062f\u0647 Certbot \u06a9\u0647 \u062f\u0631 nginx-conf\/options-ssl-nginx.conf \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0631\u062f\u06cc\u062f\u2014\u0631\u0627 \u0634\u0627\u0645\u0644 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u0627\u06cc\u0646\u060c \u0628\u0631\u062e\u06cc \u0647\u062f\u0631\u0647\u0627\u06cc \u0627\u0645\u0646\u06cc\u062a\u06cc \u0634\u0627\u0645\u0644 \u0634\u062f\u0647\u200c\u0627\u0646\u062f \u06a9\u0647 \u0628\u0647 \u0634\u0645\u0627 \u0627\u0645\u062a\u06cc\u0627\u0632\u0647\u0627\u06cc A \u062f\u0631 \u0686\u06cc\u0632\u0647\u0627\u06cc\u06cc \u0645\u062b\u0644 \u0633\u0627\u06cc\u062a\u200c\u0647\u0627\u06cc \u062a\u0633\u062a SSL Labs \u0648 Security Headers \u0645\u06cc\u200c\u062f\u0647\u0646\u062f. \u0627\u06cc\u0646 \u0647\u062f\u0631\u0647\u0627 \u0634\u0627\u0645\u0644 X-Frame-Options\u060c X-Content-Type-Options\u060c Referrer Policy\u060c Content-Security-Policy \u0648 X-XSS-Protection \u0647\u0633\u062a\u0646\u062f. \u0647\u062f\u0631 HTTP Strict Transport Security (HSTS) \u06a9\u0627\u0645\u0646\u062a \u0634\u062f\u0647\u2014\u0627\u06cc\u0646 \u0631\u0627 \u0641\u0642\u0637 \u0648\u0642\u062a\u06cc \u0641\u0639\u0627\u0644 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u067e\u06cc\u0627\u0645\u062f\u0647\u0627\u06cc\u0634 \u0631\u0627 \u0628\u0641\u0647\u0645\u06cc\u062f \u0648 \u0642\u0627\u0628\u0644\u06cc\u062a \u00abpreload\u00bb\u200c\u0627\u0634 \u0631\u0627 \u0627\u0631\u0632\u06cc\u0627\u0628\u06cc \u06a9\u0631\u062f\u0647 \u0628\u0627\u0634\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u06cc\u0631\u06a9\u062a\u06cc\u0648\u0647\u0627\u06cc root \u0648 index \u0634\u0645\u0627 \u0647\u0645 \u062f\u0631 \u0627\u06cc\u0646 \u0628\u0644\u0627\u06a9 \u0642\u0631\u0627\u0631 \u062f\u0627\u0631\u0646\u062f\u061b \u0645\u062b\u0644 \u0628\u0642\u06cc\u0647 \u0628\u0644\u0627\u06a9\u200c\u0647\u0627\u06cc location \u062e\u0627\u0635-\u0648\u0631\u062f\u067e\u0631\u0633\u06cc \u06a9\u0647 \u062f\u0631 \u06af\u0627\u0645 \u06f1 \u0628\u062d\u062b \u0634\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0642\u062a\u06cc \u0648\u06cc\u0631\u0627\u06cc\u0634 \u062a\u0645\u0627\u0645 \u0634\u062f\u060c \u0641\u0627\u06cc\u0644 \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u0648 \u0628\u0628\u0646\u062f\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0642\u0628\u0644 \u0627\u0632 \u0628\u0627\u0632\u0633\u0627\u0632\u06cc \u0633\u0631\u0648\u06cc\u0633 webserver\u060c \u0644\u0627\u0632\u0645 \u0627\u0633\u062a \u0646\u06af\u0627\u0634\u062a \u067e\u0648\u0631\u062a 443 \u0631\u0627 \u0628\u0647 \u062a\u0639\u0631\u06cc\u0641 \u0633\u0631\u0648\u06cc\u0633 webserver \u062e\u0648\u062f\u062a\u0627\u0646 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0627\u06cc\u0644 docker-compose.yml \u062e\u0648\u062f\u062a\u0627\u0646 \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nano docker-compose.yml<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u062a\u0639\u0631\u06cc\u0641 \u0633\u0631\u0648\u06cc\u0633 webserver\u060c \u0646\u06af\u0627\u0634\u062a \u067e\u0648\u0631\u062a \u0632\u06cc\u0631 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>~\/wordpress\/docker-compose.yml<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>...\n  webserver:\n    depends_on:\n      - wordpress\n    image: nginx:1.15.12-alpine\n    container_name: webserver\n    restart: unless-stopped\n    ports:\n      - \"80:80\"\n      - \"443:443\"\n    volumes:\n      - wordpress:\/var\/www\/html\n      - .\/nginx-conf:\/etc\/nginx\/conf.d\n      - certbot-etc:\/etc\/letsencrypt\n    networks:\n      - app-network<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0632\u06cc\u0631\u060c \u0641\u0627\u06cc\u0644 \u06a9\u0627\u0645\u0644 docker-compose.yml \u0628\u0639\u062f \u0627\u0632 \u0648\u06cc\u0631\u0627\u06cc\u0634\u200c\u0647\u0627 \u0622\u0645\u062f\u0647:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>~\/wordpress\/docker-compose.yml<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>version: '3'\n\nservices:\n  db:\n    image: mysql:8.0\n    container_name: db\n    restart: unless-stopped\n    env_file: .env\n    environment:\n      - MYSQL_DATABASE=wordpress\n    volumes:\n      - dbdata:\/var\/lib\/mysql\n    command: '--default-authentication-plugin=mysql_native_password'\n    networks:\n      - app-network\n\n  wordpress:\n    depends_on:\n      - db\n    image: wordpress:5.1.1-fpm-alpine\n    container_name: wordpress\n    restart: unless-stopped\n    env_file: .env\n    environment:\n      - WORDPRESS_DB_HOST=db:3306\n      - WORDPRESS_DB_USER=$MYSQL_USER\n      - WORDPRESS_DB_PASSWORD=$MYSQL_PASSWORD\n      - WORDPRESS_DB_NAME=wordpress\n    volumes:\n      - wordpress:\/var\/www\/html\n    networks:\n      - app-network\n\n  webserver:\n    depends_on:\n      - wordpress\n    image: nginx:1.15.12-alpine\n    container_name: webserver\n    restart: unless-stopped\n    ports:\n      - \"80:80\"\n      - \"443:443\"\n    volumes:\n      - wordpress:\/var\/www\/html\n      - .\/nginx-conf:\/etc\/nginx\/conf.d\n      - certbot-etc:\/etc\/letsencrypt\n    networks:\n      - app-network\n\n  certbot:\n    depends_on:\n      - webserver\n    image: certbot\/certbot\n    container_name: certbot\n    volumes:\n      - certbot-etc:\/etc\/letsencrypt\n      - wordpress:\/var\/www\/html\n    command: certonly --webroot --webroot-path=\/var\/www\/html --email sammy@your_domain --agree-tos --no-eff-email --force-renewal -d your_domain -d www.your_domain\n\nvolumes:\n  certbot-etc:\n  wordpress:\n  dbdata:\n\nnetworks:\n  app-network:\n    driver: bridge<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0642\u062a\u06cc \u0648\u06cc\u0631\u0627\u06cc\u0634 \u062a\u0645\u0627\u0645 \u0634\u062f \u0641\u0627\u06cc\u0644 \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u0648 \u0628\u0628\u0646\u062f\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u0631\u0648\u06cc\u0633 webserver \u0631\u0627 \u0628\u0627\u0632\u0633\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker-compose up -d --force-recreate --no-deps webserver<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc\u200c\u062a\u0627\u0646 \u0631\u0627 \u0628\u0627 <code>docker-compose ps<\/code> \u0686\u06a9 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker-compose ps<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062e\u0631\u0648\u062c\u06cc \u0628\u0627\u06cc\u062f \u0646\u0634\u0627\u0646 \u0628\u062f\u0647\u062f \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc db\u060c wordpress \u0648 webserver \u0634\u0645\u0627 \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627\u06cc\u0646\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Output\n  Name                 Command               State                     Ports\n----------------------------------------------------------------------------------------------\ncertbot     certbot certonly --webroot ...   Exit 0\ndb          docker-entrypoint.sh --def ...   Up       3306\/tcp, 33060\/tcp\nwebserver   nginx -g daemon off;             Up       0.0.0.0:443-&gt;443\/tcp, 0.0.0.0:80-&gt;80\/tcp\nwordpress   docker-entrypoint.sh php-fpm     Up       9000\/tcp<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0627 \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627 \u0628\u0648\u062f\u0646 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc\u200c\u062a\u0627\u0646\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0646\u0635\u0628 \u0648\u0631\u062f\u067e\u0631\u0633\u200c\u062a\u0627\u0646 \u0631\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0631\u0627\u0628\u0637 \u0648\u0628 \u06a9\u0627\u0645\u0644 \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u06af\u0627\u0645 \u06f6 \u2014 \u062a\u06a9\u0645\u06cc\u0644 \u0646\u0635\u0628 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0631\u0627\u0628\u0637 \u0648\u0628<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0627 \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627 \u0628\u0648\u062f\u0646 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc\u200c\u062a\u0627\u0646\u060c \u0646\u0635\u0628 \u0631\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0631\u0627\u0628\u0637 \u0648\u0628 \u0648\u0631\u062f\u067e\u0631\u0633 \u062a\u0645\u0627\u0645 \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0645\u0631\u0648\u0631\u06af\u0631 \u0648\u0628 \u062e\u0648\u062f\u062a\u0627\u0646\u060c \u0628\u0647 \u062f\u0627\u0645\u0646\u0647 \u0633\u0631\u0648\u0631\u062a\u0627\u0646 \u0628\u0631\u0648\u06cc\u062f. \u06cc\u0627\u062f\u062a\u0627\u0646 \u0628\u0627\u0634\u062f your_domain \u0631\u0627 \u0628\u0627 \u0646\u0627\u0645 \u062f\u0627\u0645\u0646\u0647 \u062e\u0648\u062f\u062a\u0627\u0646 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>https:&#47;&#47;your_domain<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0632\u0628\u0627\u0646\u06cc \u06a9\u0647 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f \u0631\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"wordpress-language-selector.png\" alt=\"\u0627\u0646\u062a\u062e\u0627\u0628\u06af\u0631 \u0632\u0628\u0627\u0646 \u0648\u0631\u062f\u067e\u0631\u0633\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f \u0627\u0632 \u06a9\u0644\u06cc\u06a9 \u0631\u0648\u06cc Continue\u060c \u0628\u0647 \u0635\u0641\u062d\u0647 \u0627\u0635\u0644\u06cc \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u06cc\u200c\u0631\u0633\u06cc\u062f\u061b \u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0644\u0627\u0632\u0645 \u0627\u0633\u062a \u0646\u0627\u0645\u06cc \u0628\u0631\u0627\u06cc \u0633\u0627\u06cc\u062a\u200c\u062a\u0627\u0646 \u0648 \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f. \u0627\u0646\u062a\u062e\u0627\u0628 \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0628\u0647\u200c\u06cc\u0627\u062f\u0645\u0627\u0646\u062f\u0646\u06cc \u0627\u06cc\u0646\u062c\u0627 \u0627\u06cc\u062f\u0647 \u062e\u0648\u0628\u06cc \u0627\u0633\u062a (\u0628\u0647\u200c\u062c\u0627\u06cc \u00abadmin\u00bb) \u0628\u0647\u200c\u0647\u0645\u0631\u0627\u0647 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0642\u0648\u06cc. \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631\u06cc \u06a9\u0647 \u0648\u0631\u062f\u067e\u0631\u0633 \u062e\u0648\u062f\u06a9\u0627\u0631 \u062a\u0648\u0644\u06cc\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f \u06cc\u0627 \u062e\u0648\u062f\u062a\u0627\u0646 \u0628\u0633\u0627\u0632\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0646\u0647\u0627\u06cc\u062a\u060c \u0644\u0627\u0632\u0645 \u0627\u0633\u062a \u0622\u062f\u0631\u0633 \u0627\u06cc\u0645\u06cc\u0644\u200c\u062a\u0627\u0646 \u0631\u0627 \u0648\u0627\u0631\u062f \u0648 \u062a\u0635\u0645\u06cc\u0645 \u0628\u06af\u06cc\u0631\u06cc\u062f \u06a9\u0647 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u062f \u0645\u0648\u062a\u0648\u0631\u0647\u0627\u06cc \u062c\u0633\u062a\u062c\u0648 \u0627\u0632 Index \u06a9\u0631\u062f\u0646 \u0633\u0627\u06cc\u062a\u200c\u062a\u0627\u0646 \u0645\u0646\u0635\u0631\u0641 \u0634\u0648\u0646\u062f \u06cc\u0627 \u0646\u0647:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"wordpress-setup-page.png\" alt=\"\u0635\u0641\u062d\u0647 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0627\u0635\u0644\u06cc \u0648\u0631\u062f\u067e\u0631\u0633\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u06a9\u0644\u06cc\u06a9 \u0631\u0648\u06cc Install WordPress \u062f\u0631 \u067e\u0627\u06cc\u06cc\u0646 \u0635\u0641\u062d\u0647\u060c \u0634\u0645\u0627 \u0631\u0627 \u0628\u0647 \u067e\u0631\u0627\u0645\u067e\u062a \u0648\u0631\u0648\u062f \u0645\u06cc\u200c\u0628\u0631\u062f:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"wordpress-login.png\" alt=\"\u0635\u0641\u062d\u0647 \u0648\u0631\u0648\u062f \u0648\u0631\u062f\u067e\u0631\u0633\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f \u0627\u0632 \u0648\u0631\u0648\u062f\u060c \u0628\u0647 \u062f\u0627\u0634\u0628\u0648\u0631\u062f \u0645\u062f\u06cc\u0631\u06cc\u062a\u06cc \u0648\u0631\u062f\u067e\u0631\u0633 \u062f\u0633\u062a\u0631\u0633\u06cc \u062e\u0648\u0627\u0647\u06cc\u062f \u062f\u0627\u0634\u062a:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"wordpress-admin-dashboard.png\" alt=\"\u062f\u0627\u0634\u0628\u0648\u0631\u062f \u0645\u062f\u06cc\u0631\u06cc\u062a \u0648\u0631\u062f\u067e\u0631\u0633\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0627 \u062a\u06a9\u0645\u06cc\u0644 \u0646\u0635\u0628 \u0648\u0631\u062f\u067e\u0631\u0633\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0642\u062f\u0645\u200c\u0647\u0627\u06cc\u06cc \u0628\u0631\u0627\u06cc \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0627\u0632 \u062a\u0645\u062f\u06cc\u062f \u062e\u0648\u062f\u06a9\u0627\u0631 \u06af\u0648\u0627\u0647\u06cc\u200c\u0647\u0627\u06cc SSL \u0628\u0631\u062f\u0627\u0631\u06cc\u062f.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u06af\u0627\u0645 \u06f7 \u2014 \u062a\u0645\u062f\u06cc\u062f \u06af\u0648\u0627\u0647\u06cc\u200c\u0647\u0627<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u06af\u0648\u0627\u0647\u06cc\u200c\u0647\u0627\u06cc Let&#8217;s Encrypt \u0628\u0631\u0627\u06cc \u06f9\u06f0 \u0631\u0648\u0632 \u0645\u0639\u062a\u0628\u0631\u0646\u062f. \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0641\u0631\u0627\u06cc\u0646\u062f \u062a\u0645\u062f\u06cc\u062f \u062e\u0648\u062f\u06a9\u0627\u0631\u06cc \u0631\u0627\u0647 \u0628\u06cc\u0646\u062f\u0627\u0632\u06cc\u062f \u062a\u0627 \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u0645\u0646\u0642\u0636\u06cc \u0646\u0645\u06cc\u200c\u0634\u0648\u0646\u062f. \u0631\u0627\u0647\u06cc \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u06a9\u0627\u0631\u060c \u0633\u0627\u062e\u062a Job\u0627\u06cc \u0628\u0627 \u0627\u0628\u0632\u0627\u0631 \u0632\u0645\u0627\u0646\u200c\u0628\u0646\u062f\u06cc cron \u0627\u0633\u062a. \u062f\u0631 \u0645\u062b\u0627\u0644 \u0632\u06cc\u0631\u060c Cron Job\u0627\u06cc \u0645\u06cc\u200c\u0633\u0627\u0632\u06cc\u062f \u06a9\u0647 \u062f\u0648\u0631\u0647\u200c\u0627\u06cc \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a\u06cc \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u062f \u062a\u0627 \u06af\u0648\u0627\u0647\u06cc\u200c\u0647\u0627\u06cc\u200c\u062a\u0627\u0646 \u0631\u0627 \u062a\u0645\u062f\u06cc\u062f \u0648 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc Nginx \u0631\u0627 Reload \u06a9\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0648\u0644\u060c \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a\u06cc \u0628\u0647 \u0646\u0627\u0645 ssl_renew.sh \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nano ssl_renew.sh<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u06a9\u062f \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0647 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u06af\u0648\u0627\u0647\u06cc\u200c\u0647\u0627\u06cc\u200c\u062a\u0627\u0646 \u062a\u0645\u062f\u06cc\u062f \u0648 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0648\u0628\u200c\u0633\u0631\u0648\u0631\u062a\u0627\u0646 Reload \u0634\u0648\u062f. \u06cc\u0627\u062f\u062a\u0627\u0646 \u0628\u0627\u0634\u062f \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0646\u0645\u0648\u0646\u0647 \u0627\u06cc\u0646\u062c\u0627 \u0631\u0627 \u0628\u0627 \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u063a\u06cc\u0631 root \u062e\u0648\u062f\u062a\u0627\u0646 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>~\/wordpress\/ssl_renew.sh<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#!\/bin\/bash\n\nCOMPOSE=\"\/usr\/local\/bin\/docker-compose --no-ansi\"\nDOCKER=\"\/usr\/bin\/docker\"\n\ncd \/home\/sammy\/wordpress\/\n$COMPOSE run certbot renew --dry-run &amp;&amp; $COMPOSE kill -s SIGHUP webserver\n$DOCKER system prune -af<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0627\u0648\u0644 \u0628\u0627\u06cc\u0646\u0631\u06cc docker-compose \u0631\u0627 \u0628\u0647 \u0645\u062a\u063a\u06cc\u0631\u06cc \u0628\u0647 \u0646\u0627\u0645 COMPOSE \u062a\u062e\u0635\u06cc\u0635 \u0645\u06cc\u200c\u062f\u0647\u062f \u0648 \u06af\u0632\u06cc\u0646\u0647 <code>--no-ansi<\/code> \u0631\u0627 \u062a\u0639\u06cc\u06cc\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f\u061b \u06a9\u0647 \u062f\u0633\u062a\u0648\u0631\u0627\u062a docker-compose \u0631\u0627 \u0628\u062f\u0648\u0646 \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631\u0647\u0627\u06cc \u06a9\u0646\u062a\u0631\u0644\u06cc ANSI \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0633\u067e\u0633 \u0647\u0645\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u0628\u0627 \u0628\u0627\u06cc\u0646\u0631\u06cc docker \u0645\u06cc\u200c\u06a9\u0646\u062f. \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a\u060c \u0628\u0647 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u067e\u0631\u0648\u0698\u0647 <code>~\/wordpress<\/code> \u062a\u063a\u06cc\u06cc\u0631 \u0645\u06cc\u200c\u062f\u0647\u062f \u0648 \u062f\u0633\u062a\u0648\u0631\u0627\u062a docker-compose \u0632\u06cc\u0631 \u0631\u0627 \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u06a9\u0646\u062f:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>docker-compose run:<\/strong> \u0627\u06cc\u0646 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 certbot \u0631\u0627 \u0634\u0631\u0648\u0639 \u0648 \u062f\u0633\u062a\u0648\u0631\u0650 \u062a\u0623\u0645\u06cc\u0646\u200c\u0634\u062f\u0647 \u062f\u0631 \u062a\u0639\u0631\u06cc\u0641 \u0633\u0631\u0648\u06cc\u0633 certbot \u0634\u0645\u0627 \u0631\u0627 Override \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0628\u0647\u200c\u062c\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0632\u06cc\u0631\u062f\u0633\u062a\u0648\u0631 certonly\u060c \u0627\u0632 \u0632\u06cc\u0631\u062f\u0633\u062a\u0648\u0631 renew \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f\u061b \u06a9\u0647 \u06af\u0648\u0627\u0647\u06cc\u200c\u0647\u0627\u06cc \u0646\u0632\u062f\u06cc\u06a9 \u0628\u0647 \u0627\u0646\u0642\u0636\u0627 \u0631\u0627 \u062a\u0645\u062f\u06cc\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0647\u0645\u200c\u0686\u0646\u06cc\u0646 \u06af\u0632\u06cc\u0646\u0647 <code>--dry-run<\/code> \u0628\u0631\u0627\u06cc \u062a\u0633\u062a \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a\u200c\u062a\u0627\u0646 \u0634\u0627\u0645\u0644 \u0634\u062f\u0647 \u0627\u0633\u062a.<\/li>\n\n\n\n<li><strong>docker-compose kill:<\/strong> \u0627\u06cc\u0646 \u0633\u06cc\u06af\u0646\u0627\u0644 SIGHUP \u0631\u0627 \u0628\u0647 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 webserver \u0645\u06cc\u200c\u0641\u0631\u0633\u062a\u062f \u062a\u0627 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc Nginx \u0631\u0627 Reload \u06a9\u0646\u062f.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u067e\u0633 <code>docker system prune<\/code> \u0631\u0627 \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u06a9\u0646\u062f \u062a\u0627 \u0647\u0645\u0647 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627 \u0648 Image\u0647\u0627\u06cc \u0628\u0644\u0627\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062d\u0630\u0641 \u0634\u0648\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0642\u062a\u06cc \u0648\u06cc\u0631\u0627\u06cc\u0634 \u062a\u0645\u0627\u0645 \u0634\u062f \u0641\u0627\u06cc\u0644 \u0631\u0627 \u0628\u0628\u0646\u062f\u06cc\u062f. \u0628\u0627 \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0642\u0627\u0628\u0644 \u0627\u062c\u0631\u0627\u06cc\u0634 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>chmod +x ssl_renew.sh<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f\u060c \u0641\u0627\u06cc\u0644 crontab \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 root \u062e\u0648\u062f\u062a\u0627\u0646 \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u062a\u0645\u062f\u06cc\u062f \u062f\u0631 \u0628\u0627\u0632\u0647 \u0645\u0634\u062e\u0635\u06cc \u0627\u062c\u0631\u0627 \u0634\u0648\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo crontab -e<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u0627\u0648\u0644\u06cc\u0646\u200c\u0628\u0627\u0631 \u0627\u0633\u062a \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0631\u0627 \u0648\u06cc\u0631\u0627\u06cc\u0634 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f\u060c \u0627\u0632 \u0634\u0645\u0627 \u062e\u0648\u0627\u0633\u062a\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f \u0648\u06cc\u0631\u0627\u06cc\u0634\u06af\u0631\u06cc \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Output\nno crontab for root - using an empty one\n\nSelect an editor.  To change later, run 'select-editor'.\n  1. \/bin\/nano        &lt;---- easiest\n  2. \/usr\/bin\/vim.basic\n  3. \/usr\/bin\/vim.tiny\n  4. \/bin\/ed\n\nChoose 1-4 &#91;1]:\n...<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0627\u0646\u062a\u0647\u0627\u06cc \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644\u060c \u062e\u0637 \u0632\u06cc\u0631 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>crontab\n...\n*\/5 * * * * \/home\/sammy\/wordpress\/ssl_renew.sh &gt;&gt; \/var\/log\/cron.log 2&gt;&amp;1<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0628\u0627\u0632\u0647 Job \u0631\u0627 \u0631\u0648\u06cc \u0647\u0631 \u067e\u0646\u062c \u062f\u0642\u06cc\u0642\u0647 \u062a\u0646\u0638\u06cc\u0645 \u0645\u06cc\u200c\u06a9\u0646\u062f \u062a\u0627 \u0628\u062a\u0648\u0627\u0646\u06cc\u062f \u062a\u0633\u062a \u06a9\u0646\u06cc\u062f \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062a\u0645\u062f\u06cc\u062f\u062a\u0627\u0646 \u0637\u0628\u0642 \u0645\u0648\u0631\u062f\u0646\u0638\u0631 \u06a9\u0627\u0631 \u06a9\u0631\u062f\u0647 \u06cc\u0627 \u0646\u0647. \u0641\u0627\u06cc\u0644 \u0644\u0627\u06af\u06cc \u0628\u0647 \u0646\u0627\u0645 cron.log \u0628\u0631\u0627\u06cc \u062b\u0628\u062a \u062e\u0631\u0648\u062c\u06cc \u0645\u0631\u0628\u0648\u0637\u0647 \u0627\u0632 Job \u0633\u0627\u062e\u062a\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f \u0627\u0632 \u067e\u0646\u062c \u062f\u0642\u06cc\u0642\u0647\u060c cron.log \u0631\u0627 \u0628\u0631\u0627\u06cc \u062a\u0623\u06cc\u06cc\u062f \u0645\u0648\u0641\u0642 \u0628\u0648\u062f\u0646 \u06cc\u0627 \u0646\u0628\u0648\u062f\u0646 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062a\u0645\u062f\u06cc\u062f \u0686\u06a9 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>tail -f \/var\/log\/cron.log<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062e\u0631\u0648\u062c\u06cc \u0632\u06cc\u0631 \u062a\u0645\u062f\u06cc\u062f \u0645\u0648\u0641\u0642 \u0631\u0627 \u062a\u0623\u06cc\u06cc\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Output\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n** DRY RUN: simulating 'certbot renew' close to cert expiry\n**          (The test certificates below have not been saved.)\n\nCongratulations, all renewals succeeded. The following certs have been renewed:\n  \/etc\/letsencrypt\/live\/your_domain\/fullchain.pem (success)\n** DRY RUN: simulating 'certbot renew' close to cert expiry\n**          (The test certificates above have not been saved.)\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0627 \u062a\u0627\u06cc\u067e CTRL+C \u062f\u0631 \u062a\u0631\u0645\u06cc\u0646\u0627\u0644\u200c\u062a\u0627\u0646 \u0627\u0632 \u0622\u0646 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0641\u0627\u06cc\u0644 crontab \u0631\u0627 \u0628\u0631\u0627\u06cc \u062a\u0646\u0638\u06cc\u0645 \u0628\u0627\u0632\u0647 \u0631\u0648\u0632\u0627\u0646\u0647 \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0647\u06cc\u062f. \u0645\u062b\u0644\u0627\u064b \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0647\u0631 \u0631\u0648\u0632 \u0633\u0627\u0639\u062a \u0638\u0647\u0631\u060c \u062e\u0637 \u0622\u062e\u0631 \u0641\u0627\u06cc\u0644 \u0631\u0627 \u0645\u062b\u0644 \u0632\u06cc\u0631 \u062a\u063a\u06cc\u06cc\u0631 \u0645\u06cc\u200c\u062f\u0647\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>crontab\n...\n0 12 * * * \/home\/sammy\/wordpress\/ssl_renew.sh &gt;&gt; \/var\/log\/cron.log 2&gt;&amp;1<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0645\u200c\u0686\u0646\u06cc\u0646 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u062f \u06af\u0632\u06cc\u0646\u0647 <code>--dry-run<\/code> \u0631\u0627 \u0627\u0632 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a ssl_renew.sh \u062e\u0648\u062f\u062a\u0627\u0646 \u062d\u0630\u0641 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>~\/wordpress\/ssl_renew.sh<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#!\/bin\/bash\n\nCOMPOSE=\"\/usr\/local\/bin\/docker-compose --no-ansi\"\nDOCKER=\"\/usr\/bin\/docker\"\n\ncd \/home\/sammy\/wordpress\/\n$COMPOSE run certbot renew &amp;&amp; $COMPOSE kill -s SIGHUP webserver\n$DOCKER system prune -af<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Cron Job \u0634\u0645\u0627 \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f \u06af\u0648\u0627\u0647\u06cc\u200c\u0647\u0627\u06cc Let&#8217;s Encrypt \u0634\u0645\u0627 \u0628\u0627 \u062a\u0645\u062f\u06cc\u062f \u0648\u0642\u062a\u06cc \u0648\u0627\u062c\u062f \u0634\u0631\u0627\u06cc\u0637\u200c\u0627\u0646\u062f \u0645\u0646\u0642\u0636\u06cc \u0646\u0634\u0648\u0646\u062f. \u0647\u0645\u200c\u0686\u0646\u06cc\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0686\u0631\u062e\u0634 \u0644\u0627\u06af \u0631\u0627 \u0628\u0627 \u0627\u0628\u0632\u0627\u0631 Logrotate \u0631\u0648\u06cc \u0627\u0648\u0628\u0648\u0646\u062a\u0648 \u0628\u0631\u0627\u06cc \u0686\u0631\u062e\u0627\u0646\u062f\u0646 \u0648 \u0641\u0634\u0631\u062f\u0647 \u06a9\u0631\u062f\u0646 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0644\u0627\u06af\u200c\u062a\u0627\u0646 \u0631\u0627\u0647 \u0628\u06cc\u0646\u062f\u0627\u0632\u06cc\u062f.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0648\u0627\u0644\u0627\u062a \u0645\u062a\u062f\u0627\u0648\u0644<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u06f1. \u0686\u0631\u0627 \u0628\u0627\u06cc\u062f \u0627\u0632 Docker Compose \u0628\u0631\u0627\u06cc \u0648\u0631\u062f\u067e\u0631\u0633 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u0645\u061f<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Docker Compose \u0641\u0631\u0627\u06cc\u0646\u062f \u0646\u0635\u0628 \u0648\u0631\u062f\u067e\u0631\u0633 \u0631\u0627 \u0633\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0628\u0647\u200c\u062c\u0627\u06cc \u0646\u0635\u0628 \u062f\u0633\u062a\u06cc \u0627\u0633\u062a\u06a9 LAMP (\u0644\u06cc\u0646\u0648\u06a9\u0633\u060c Apache\u060c MySQL\u060c PHP) \u06cc\u0627 LEMP (\u0644\u06cc\u0646\u0648\u06a9\u0633\u060c Nginx\u060c MySQL\u060c PHP)\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u06a9\u0644 \u0645\u062d\u06cc\u0637 \u0686\u0646\u062f\u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u06cc\u200c\u062a\u0627\u0646 \u0631\u0627 \u062f\u0631 \u0641\u0627\u06cc\u0644 docker-compose.yml \u0645\u0646\u0641\u0631\u062f\u06cc \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u062f. \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0647\u0645\u0647 \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc\u06cc \u0631\u0627 \u06a9\u0647 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u200c\u062a\u0627\u0646 \u0644\u0627\u0632\u0645 \u062f\u0627\u0631\u062f \u0647\u0645\u0627\u0647\u0646\u06af \u0645\u06cc\u200c\u06a9\u0646\u062f\u061b \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0648\u0631\u062f: \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 MySQL\u060c \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0648\u0631\u062f\u067e\u0631\u0633 \u0648 \u0648\u0628\u200c\u0633\u0631\u0648\u0631 Nginx. \u0627\u06cc\u0646 \u0631\u0648\u0634 \u06a9\u0645\u062a\u0631 \u0632\u0645\u0627\u0646\u200c\u0628\u0631 \u0627\u0633\u062a \u0648 \u0628\u0647 \u0634\u0645\u0627 \u0627\u062c\u0627\u0632\u0647 \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f \u06a9\u0631\u062f\u0646 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0628\u0627 Image\u0647\u0627\u06cc \u0627\u0632-\u067e\u06cc\u0634-\u0633\u0627\u062e\u062a\u0647\u200c\u0634\u062f\u0647 \u0631\u0627 \u0645\u06cc\u200c\u062f\u0647\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u06f2. \u0648\u0628\u200c\u0633\u0631\u0648\u0631 Nginx \u0648 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0648\u0631\u062f\u067e\u0631\u0633 \u0686\u06af\u0648\u0646\u0647 \u0645\u062a\u0635\u0644 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f\u061f<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0648\u0628\u200c\u0633\u0631\u0648\u0631 Nginx \u0648 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 wordpress \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0634\u0628\u06a9\u0647 Bridge \u0633\u0641\u0627\u0631\u0634\u06cc\u0650 \u062a\u0639\u0631\u06cc\u0641\u200c\u0634\u062f\u0647 \u062f\u0631 \u0641\u0627\u06cc\u0644 Compose\u2014\u0628\u0647 \u0646\u0627\u0645 app-network\u2014\u0645\u062a\u0635\u0644 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f. \u0627\u06cc\u0646 \u0634\u0628\u06a9\u0647 \u0628\u0647 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627 \u0627\u062c\u0627\u0632\u0647 \u0627\u0631\u062a\u0628\u0627\u0637 \u0627\u0645\u0646 \u0631\u0627 \u0645\u06cc\u200c\u062f\u0647\u062f. \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc Nginx \u06cc\u0639\u0646\u06cc (nginx.conf) \u0637\u0648\u0631\u06cc \u062a\u0646\u0638\u06cc\u0645 \u0634\u062f\u0647 \u06a9\u0647 \u067e\u0631\u062f\u0627\u0632\u0634 PHP \u0631\u0627 \u0628\u0627 Proxy \u06a9\u0631\u062f\u0646 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0646\u062f. \u0645\u0634\u062e\u0635\u0627\u064b\u060c \u0647\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u0650 \u0645\u0646\u0637\u0628\u0642 \u0628\u0627 <code>\\.php$<\/code> \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062f\u0627\u06cc\u0631\u06a9\u062a\u06cc\u0648 <code>fastcgi_pass wordpress:9000;<\/code> \u0628\u0647 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 wordpress \u067e\u0627\u0633 \u0645\u06cc\u200c\u0634\u0648\u062f. \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f\u061b \u0686\u0648\u0646 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 wordpress \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627\u06cc Image \u06cc\u0639\u0646\u06cc <code>wordpress:5.1.1-fpm-alpine<\/code> \u0627\u0633\u062a\u061b \u06a9\u0647 \u067e\u0631\u062f\u0627\u0632\u0634\u06af\u0631 php-fpm \u0644\u0627\u0632\u0645\u0650 Nginx \u0631\u0627 \u0634\u0627\u0645\u0644 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u06f3. \u0627\u06cc\u0646 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0686\u06af\u0648\u0646\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062d\u0633\u0627\u0633\u06cc \u0645\u062b\u0644 \u0631\u0645\u0632\u0647\u0627\u06cc \u0639\u0628\u0648\u0631 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0631\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc\u200c\u06a9\u0646\u062f\u061f<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062d\u0633\u0627\u0633 \u0631\u0627 \u0628\u0627 \u062c\u062f\u0627\u0633\u0627\u0632\u06cc\u200c\u0627\u0634 \u0627\u0632 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0627\u0635\u0644\u06cc \u0627\u0645\u0646 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0647\u0645\u0647 \u0627\u0639\u062a\u0628\u0627\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u2014\u0645\u062b\u0644 MYSQL_ROOT_PASSWORD\u060c MYSQL_USER \u0648 MYSQL_PASSWORD\u2014\u062f\u0631 \u0641\u0627\u06cc\u0644 <code>.env<\/code> \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f. \u0633\u067e\u0633 \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc db \u0648 wordpress \u062f\u0631 \u0641\u0627\u06cc\u0644 docker-compose.yml \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062f\u0627\u06cc\u0631\u06a9\u062a\u06cc\u0648 <code>env_file: .env<\/code> \u0628\u0647 \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0627\u0631\u062c\u0627\u0639 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f. \u0627\u06cc\u0646 \u0627\u0632 Hard-code \u0634\u062f\u0646\u060c \u0627\u0641\u0634\u0627\u06cc \u0639\u0645\u0648\u0645\u06cc \u06cc\u0627 Commit \u062a\u0635\u0627\u062f\u0641\u06cc \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u062d\u0633\u0627\u0633 \u0628\u0647 \u0645\u062e\u0632\u0646 Git \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0628\u0631\u0627\u06cc \u062a\u0642\u0648\u06cc\u062a \u0628\u06cc\u0634\u062a\u0631\u060c tutorial \u0627\u0641\u0632\u0648\u062f\u0646 <code>.env<\/code> \u0628\u0647 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc <code>.gitignore<\/code> \u0648 <code>.dockerignore<\/code> \u0631\u0627 \u062a\u0648\u0635\u06cc\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u06f4. \u0641\u0631\u0627\u06cc\u0646\u062f \u062f\u0631\u06cc\u0627\u0641\u062a \u06af\u0648\u0627\u0647\u06cc SSL \u0686\u06cc\u0633\u062a\u061f<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0627\u0632 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0627\u062e\u062a\u0635\u0627\u0635\u06cc certbot \u0628\u0631\u0627\u06cc \u06af\u0631\u0641\u062a\u0646 \u06af\u0648\u0627\u0647\u06cc \u0627\u0632 Let&#8217;s Encrypt \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u062a\u0633\u062a \u0627\u0648\u0644\u06cc\u0647:<\/strong> \u0627\u0648\u0644\u060c <code>docker-compose up -d<\/code> \u0631\u0627 \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f. \u0633\u0631\u0648\u06cc\u0633 certbot \u062f\u0631 \u0641\u0627\u06cc\u0644 docker-compose.yml \u0627\u0628\u062a\u062f\u0627 \u0634\u0627\u0645\u0644 \u0641\u0644\u06af <code>--staging<\/code> \u0627\u0633\u062a. \u0627\u06cc\u0646 \u0628\u0647 Certbot \u0645\u06cc\u200c\u06af\u0648\u06cc\u062f \u06af\u0648\u0627\u0647\u06cc \u062a\u0633\u062a\u06cc \u0627\u0632 \u0645\u062d\u06cc\u0637 staging \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 Let&#8217;s Encrypt \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u0646\u062f\u061b \u06a9\u0647 \u0628\u0647 \u0634\u0645\u0627 \u06a9\u0645\u06a9 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0627\u0632 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a\u200c\u0647\u0627\u06cc \u0646\u0631\u062e \u0627\u062c\u062a\u0646\u0627\u0628 \u0648 \u062f\u0631 \u0639\u06cc\u0646 \u062d\u0627\u0644 \u0627\u0632 \u0635\u062d\u062a \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc\u200c\u062a\u0627\u0646 \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f.<\/li>\n\n\n\n<li><strong>\u062a\u0623\u06cc\u06cc\u062f:<\/strong> \u06af\u0648\u0627\u0647\u06cc \u062a\u0633\u062a\u06cc \u0633\u0627\u062e\u062a\u0647\u200c\u0634\u062f\u0647 \u0631\u0627 \u0628\u0627 \u0686\u06a9 \u06a9\u0631\u062f\u0646 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc <code>\/etc\/letsencrypt\/live<\/code> \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 webserver \u062a\u0623\u06cc\u06cc\u062f \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f.<\/li>\n\n\n\n<li><strong>\u06af\u0648\u0627\u0647\u06cc \u0648\u0627\u0642\u0639\u06cc:<\/strong> \u0648\u0642\u062a\u06cc \u0645\u0648\u0641\u0642\u06cc\u062a \u062a\u0633\u062a \u0631\u0627 \u062a\u0623\u06cc\u06cc\u062f \u06a9\u0631\u062f\u06cc\u062f\u060c \u062f\u0633\u062a\u0648\u0631 \u0633\u0631\u0648\u06cc\u0633 certbot \u062f\u0631 \u0641\u0627\u06cc\u0644 docker-compose.yml \u062e\u0648\u062f\u062a\u0627\u0646 \u0631\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u0645\u06cc\u200c\u062f\u0647\u06cc\u062f. \u0641\u0644\u06af <code>--staging<\/code> \u0631\u0627 \u062d\u0630\u0641 \u0648 <code>--force-renewal<\/code> \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f.<\/li>\n\n\n\n<li><strong>\u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0646\u0647\u0627\u06cc\u06cc:<\/strong> \u0633\u067e\u0633 <code>docker-compose up --force-recreate --no-deps certbot<\/code> \u0631\u0627 \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f \u062a\u0627 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 certbot \u0642\u062f\u06cc\u0645\u06cc \u0645\u062a\u0648\u0642\u0641\u060c \u0628\u0627 \u062f\u0633\u062a\u0648\u0631 \u062c\u062f\u06cc\u062f \u0628\u0627\u0632\u0633\u0627\u0632\u06cc \u0648 \u06af\u0648\u0627\u0647\u06cc \u0648\u0627\u0642\u0639\u06cc\u0650 \u0622\u0645\u0627\u062f\u0647-\u067e\u0631\u0648\u062f\u0627\u06a9\u0634\u0646 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0634\u0648\u062f.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u06f5. \u06af\u0648\u0627\u0647\u06cc\u200c\u0647\u0627\u06cc SSL \u0686\u06af\u0648\u0646\u0647 \u062e\u0648\u062f\u06a9\u0627\u0631 \u062a\u0645\u062f\u06cc\u062f \u0645\u06cc\u200c\u0634\u0648\u0646\u062f\u061f<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0633\u06a9\u0631\u06cc\u067e\u062a Shell\u0627\u06cc \u0628\u0647 \u0646\u0627\u0645 ssl_renew.sh \u0631\u0648\u06cc \u0645\u0627\u0634\u06cc\u0646 \u0647\u0627\u0633\u062a \u0628\u0631\u0627\u06cc \u062e\u0648\u062f\u06a9\u0627\u0631\u0633\u0627\u0632\u06cc \u0641\u0631\u0627\u06cc\u0646\u062f \u062a\u0645\u062f\u06cc\u062f \u0633\u0627\u062e\u062a\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f. \u0627\u06cc\u0646 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0628\u0647 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u067e\u0631\u0648\u0698\u0647 (<code>~\/wordpress<\/code>) \u062a\u063a\u06cc\u06cc\u0631 \u0645\u06cc\u200c\u062f\u0647\u062f.<\/li>\n\n\n\n<li><code>$COMPOSE run certbot renew<\/code> \u0631\u0627 \u0628\u0631\u0627\u06cc \u0686\u06a9 \u0627\u06cc\u0646\u06a9\u0647 \u06af\u0648\u0627\u0647\u06cc\u200c\u0647\u0627 \u0646\u0632\u062f\u06cc\u06a9 \u0627\u0646\u0642\u0636\u0627 \u0647\u0633\u062a\u0646\u062f \u0648 \u062f\u0631 \u0635\u0648\u0631\u062a \u0644\u0632\u0648\u0645 \u062a\u0645\u062f\u06cc\u062f\u0634\u0627\u0646 \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n\n\n\n<li><code>$COMPOSE kill -s SIGHUP webserver<\/code> \u0631\u0627 \u0628\u0631\u0627\u06cc \u0641\u0631\u0633\u062a\u0627\u062f\u0646 \u0633\u06cc\u06af\u0646\u0627\u0644 SIGHUP \u0628\u0647 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 Nginx \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u06a9\u0646\u062f\u061b \u06a9\u0647 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc\u200c\u0627\u0634 \u0631\u0627 \u0628\u0627 \u0638\u0631\u0627\u0641\u062a Reload \u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06af\u0648\u0627\u0647\u06cc \u062c\u062f\u06cc\u062f \u0631\u0627 \u0634\u0631\u0648\u0639 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u067e\u0633 \u0627\u06cc\u0646 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0628\u0627 \u0627\u0641\u0632\u0648\u062f\u0646 \u0628\u0647 \u0641\u0627\u06cc\u0644 crontab \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 root\u2014\u06a9\u0647 \u0627\u062c\u0631\u0627\u06cc\u0634 \u0631\u0627 \u062f\u0631 \u0628\u0627\u0632\u0647 \u062a\u0639\u0631\u06cc\u0641\u200c\u0634\u062f\u0647\u200c\u0627\u06cc (\u0645\u062b\u0644\u0627\u064b \u0631\u0648\u0632\u0627\u0646\u0647) \u062a\u0646\u0638\u06cc\u0645 \u0645\u06cc\u200c\u06a9\u0646\u062f\u2014\u0632\u0645\u0627\u0646\u200c\u0628\u0646\u062f\u06cc \u0645\u06cc\u200c\u0634\u0648\u062f \u062a\u0627 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0627\u062c\u0631\u0627 \u0634\u0648\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u06f6. \u0622\u06cc\u0627 \u0628\u0627 \u062a\u0648\u0642\u0641 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u060c \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0648 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0648\u0631\u062f\u067e\u0631\u0633\u0645 \u0631\u0627 \u0627\u0632 \u062f\u0633\u062a \u0645\u06cc\u200c\u062f\u0647\u0645\u061f<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0646\u0647\u060c \u0627\u06cc\u0646 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0628\u0631\u0627\u06cc \u0645\u0627\u0646\u062f\u06af\u0627\u0631\u06cc \u062f\u0627\u062f\u0647 \u0628\u0627 Volume\u0647\u0627\u06cc \u0646\u0627\u0645\u200c\u062f\u0627\u0631 \u0637\u0631\u0627\u062d\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Volume \u06cc\u0639\u0646\u06cc dbdata \u0628\u0647 <code>\/var\/lib\/mysql<\/code> \u062f\u0631 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 db Mount \u0645\u06cc\u200c\u0634\u0648\u062f\u061b \u0648 \u0647\u0645\u0647 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 MySQL \u0634\u0645\u0627 \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n\n\n\n<li>Volume \u06cc\u0639\u0646\u06cc wordpress \u0628\u0647 <code>\/var\/www\/html<\/code> \u062f\u0631 \u0647\u0631 \u062f\u0648\u06cc \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc wordpress \u0648 webserver Mount \u0645\u06cc\u200c\u0634\u0648\u062f\u061b \u0648 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc Core \u0648\u0631\u062f\u067e\u0631\u0633\u060c \u0642\u0627\u0644\u0628\u200c\u0647\u0627\u060c \u067e\u0644\u0627\u06af\u06cc\u0646\u200c\u0647\u0627 \u0648 \u0622\u067e\u0644\u0648\u062f\u0647\u0627\u06cc \u0634\u0645\u0627 \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n\n\n\n<li>Volume \u06cc\u0639\u0646\u06cc certbot-etc \u06af\u0648\u0627\u0647\u06cc\u200c\u0647\u0627\u06cc SSL \u0634\u0645\u0627 \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 Volume\u0647\u0627 \u062a\u0648\u0633\u0637 \u062f\u0627\u06a9\u0631 \u0631\u0648\u06cc \u0641\u0627\u06cc\u0644\u200c\u0633\u06cc\u0633\u062a\u0645 \u0647\u0627\u0633\u062a \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc\u200c\u0634\u0648\u0646\u062f \u0648 \u0645\u0633\u062a\u0642\u0644 \u0627\u0632 \u0686\u0631\u062e\u0647 \u062d\u06cc\u0627\u062a \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0646\u062f. \u06cc\u0639\u0646\u06cc \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627 \u0631\u0627 \u0628\u062f\u0648\u0646 \u0627\u0632 \u062f\u0633\u062a \u062f\u0627\u062f\u0646 \u0647\u06cc\u0686\u200c\u06a9\u062f\u0627\u0645 \u0627\u0632 \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc\u200c\u062a\u0627\u0646 \u0645\u062a\u0648\u0642\u0641\u060c \u062d\u0630\u0641 \u06cc\u0627 \u0628\u0627\u0632\u0633\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u06f7. \u0647\u062f\u0641 \u062f\u0633\u062a\u0648\u0631 \u062f\u0631 \u062a\u0639\u0631\u06cc\u0641 \u0633\u0631\u0648\u06cc\u0633 db \u0686\u06cc\u0633\u062a\u061f<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u0631\u0648\u06cc\u0633 db \u0627\u0632 Image \u06cc\u0639\u0646\u06cc <code>mysql:8.0<\/code> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f\u061b \u06a9\u0647 \u0631\u0648\u0634 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u062c\u062f\u06cc\u062f\u062a\u0631\u06cc \u062f\u0627\u0631\u062f. Image \u0648\u0631\u062f\u067e\u0631\u0633\u2014which \u0628\u0647 PHP \u0645\u062a\u06a9\u06cc \u0627\u0633\u062a\u2014\u0627\u06cc\u0646 \u0631\u0648\u0634 \u062c\u062f\u06cc\u062f \u0631\u0627 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0646\u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0631\u0641\u0639 \u0627\u06cc\u0646 \u0645\u0633\u0626\u0644\u0647 \u0633\u0627\u0632\u06af\u0627\u0631\u06cc\u060c \u062f\u0627\u06cc\u0631\u06a9\u062a\u06cc\u0648 <code>command: '--default-authentication-plugin=mysql_native_password'<\/code> \u0628\u0647 \u062a\u0639\u0631\u06cc\u0641 \u0633\u0631\u0648\u06cc\u0633 db \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f. \u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 image \u0631\u0627 Override \u06a9\u0631\u062f\u0647 \u0648 \u0628\u0647 \u0633\u0631\u0648\u0631 MySQL \u0645\u06cc\u200c\u06af\u0648\u06cc\u062f \u0627\u0632 \u067e\u0644\u0627\u06af\u06cc\u0646 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0642\u062f\u06cc\u0645\u06cc\u200c\u062a\u0631 \u0648 \u0633\u0627\u0632\u06af\u0627\u0631\u0650 mysql_native_password \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u062f\u061b \u06a9\u0647 \u0628\u0647 \u0648\u0631\u062f\u067e\u0631\u0633 \u0627\u062c\u0627\u0632\u0647 \u0627\u062a\u0635\u0627\u0644 \u0645\u0648\u0641\u0642 \u0628\u0647 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0631\u0627 \u0645\u06cc\u200c\u062f\u0647\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u06f8. \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 Nginx \u0686\u06af\u0648\u0646\u0647 \u06af\u0648\u0627\u0647\u06cc\u200c\u0647\u0627\u06cc SSL \u0631\u0627 \u0627\u0632 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 Certbot \u0645\u06cc\u200c\u06af\u06cc\u0631\u062f\u061f<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0631 \u062f\u0648\u06cc \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc webserver (\u06cc\u0639\u0646\u06cc Nginx) \u0648 certbot\u060c Volume \u0646\u0627\u0645\u200c\u062f\u0627\u0631\u06cc \u0628\u0647 \u0646\u0627\u0645 certbot-etc \u0631\u0627 \u0634\u0631\u06cc\u06a9 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u062f\u0631 \u0633\u0631\u0648\u06cc\u0633 certbot\u060c \u0627\u06cc\u0646 Volume \u0628\u0647 <code>\/etc\/letsencrypt<\/code> Mount \u0645\u06cc\u200c\u0634\u0648\u062f. \u0648\u0642\u062a\u06cc Certbot \u06af\u0648\u0627\u0647\u06cc\u200c\u0647\u0627 \u0631\u0627 \u0645\u06cc\u200c\u06af\u06cc\u0631\u062f\u060c \u0622\u0646\u200c\u0647\u0627 \u0631\u0627 \u062f\u0631 \u0627\u06cc\u0646 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0645\u06cc\u200c\u0646\u0648\u06cc\u0633\u062f.<\/li>\n\n\n\n<li>\u062f\u0631 \u0633\u0631\u0648\u06cc\u0633 webserver\u060c \u0647\u0645\u06cc\u0646 Volume \u0647\u0645 \u0628\u0647 <code>\/etc\/letsencrypt<\/code> Mount \u0645\u06cc\u200c\u0634\u0648\u062f.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0686\u0648\u0646 \u0647\u0631 \u062f\u0648 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0647\u0645\u0627\u0646 Volume \u0631\u0627 Mount \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f\u060c \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 webserver \u062f\u0633\u062a\u0631\u0633\u06cc \u0641\u0648\u0631\u06cc \u0628\u0647 \u06af\u0648\u0627\u0647\u06cc\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 Certbot \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f\u0647 \u062f\u0627\u0631\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>\u0646\u06a9\u062a\u0647 \u062f\u0631\u0628\u0627\u0631\u0647 \u0645\u06cc\u0631\u0648\u0631 \u067e\u0627\u0631\u0645\u06cc\u0646 \u06a9\u0644\u0648\u062f:<\/strong> \u0627\u06af\u0631 \u062f\u0631 \u0627\u06cc\u0631\u0627\u0646 \u0647\u0633\u062a\u06cc\u062f \u0648 Pull \u06a9\u0631\u062f\u0646 \u0645\u0633\u062a\u0642\u06cc\u0645 Image\u0647\u0627 \u0627\u0632 Docker Hub \u06a9\u0646\u062f \u06cc\u0627 \u0646\u0627\u0645\u0648\u0641\u0642 \u0627\u0633\u062a\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f Image\u0647\u0627\u06cc \u0627\u06cc\u0646 tutorial (\u0645\u062b\u0644 mysql\u060c wordpress\u060c nginx \u0648 certbot) \u0631\u0627 \u0627\u0632 \u0645\u06cc\u0631\u0648\u0631 \u0631\u062c\u06cc\u0633\u062a\u0631\u06cc \u067e\u0627\u0631\u0645\u06cc\u0646 \u06a9\u0644\u0648\u062f (<code>hub.cr.parmincloud.ir<\/code>) \u0628\u06a9\u0634\u06cc\u062f. \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u06a9\u0627\u0641\u06cc \u0627\u0633\u062a \u0646\u0627\u0645 Image\u0647\u0627 \u0631\u0627 \u062f\u0631 \u0641\u0627\u06cc\u0644 docker-compose.yml \u0628\u0627 \u067e\u06cc\u0634\u0648\u0646\u062f \u0645\u06cc\u0631\u0648\u0631 \u0628\u0646\u0648\u06cc\u0633\u06cc\u062f\u061b \u0645\u062b\u0644\u0627\u064b \u0628\u0647\u200c\u062c\u0627\u06cc <code>image: mysql:8.0<\/code> \u0627\u0632 <code>image: hub.cr.parmincloud.ir\/library\/mysql:8.0<\/code> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0646\u062a\u06cc\u062c\u0647\u200c\u06af\u06cc\u0631\u06cc<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0627\u06cc\u0646 tutorial\u060c \u0646\u0635\u0628 \u0686\u0646\u062f\u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u06cc\u0650 \u0648\u0631\u062f\u067e\u0631\u0633 \u0628\u0627 Docker Compose \u0631\u0627 \u06a9\u0627\u0645\u0644 \u06a9\u0631\u062f\u06cc\u062f. \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc \u0634\u0645\u0627 \u0634\u0627\u0645\u0644 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 MySQL\u060c \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0648\u0631\u062f\u067e\u0631\u0633 \u0628\u0627 PHP-FPM\u060c \u0648\u0628\u200c\u0633\u0631\u0648\u0631 Nginx \u0648 \u06a9\u0644\u0627\u06cc\u0646\u062a Certbot \u0628\u0631\u0627\u06cc \u06af\u0648\u0627\u0647\u06cc\u200c\u0647\u0627\u06cc SSL \u0628\u0648\u062f\u0646\u062f. \u0634\u0645\u0627 \u062a\u0648\u0646\u0633\u062a\u06cc\u062f:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0648\u0628\u200c\u0633\u0631\u0648\u0631 Nginx \u0631\u0627 \u0628\u0627 \u0628\u0644\u0627\u06a9\u200c\u0647\u0627\u06cc location \u062e\u0627\u0635-\u0648\u0631\u062f\u067e\u0631\u0633 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u062f<\/li>\n\n\n\n<li>\u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0645\u062d\u06cc\u0637\u06cc \u062d\u0633\u0627\u0633 \u0631\u0627 \u062f\u0631 \u0641\u0627\u06cc\u0644 <code>.env<\/code> \u0627\u0645\u0646 \u0646\u06af\u0647 \u062f\u0627\u0631\u06cc\u062f<\/li>\n\n\n\n<li>\u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627 \u0631\u0627 \u062f\u0631 \u0641\u0627\u06cc\u0644 docker-compose.yml \u062a\u0639\u0631\u06cc\u0641 \u0648 \u0628\u0627 \u0634\u0628\u06a9\u0647 Bridge \u0645\u0634\u062a\u0631\u06a9 \u0645\u062a\u0635\u0644 \u06a9\u0646\u06cc\u062f<\/li>\n\n\n\n<li>\u06af\u0648\u0627\u0647\u06cc\u200c\u0647\u0627\u06cc SSL \u0631\u0627 \u0627\u0632 Let&#8217;s Encrypt\u2014\u0627\u0648\u0644 \u0628\u0627 staging \u0648 \u0628\u0639\u062f \u0648\u0627\u0642\u0639\u06cc\u2014\u0628\u06af\u06cc\u0631\u06cc\u062f<\/li>\n\n\n\n<li>\u0646\u0635\u0628 \u0648\u0631\u062f\u067e\u0631\u0633 \u0631\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0631\u0627\u0628\u0637 \u0648\u0628 \u06a9\u0627\u0645\u0644 \u06a9\u0646\u06cc\u062f<\/li>\n\n\n\n<li>\u062a\u0645\u062f\u06cc\u062f \u062e\u0648\u062f\u06a9\u0627\u0631 \u06af\u0648\u0627\u0647\u06cc\u200c\u0647\u0627 \u0631\u0627 \u0628\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0648 Cron Job \u0631\u0627\u0647 \u0628\u06cc\u0646\u062f\u0627\u0632\u06cc\u062f<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u06cc\u06a9 \u0633\u0627\u06cc\u062a \u0648\u0631\u062f\u067e\u0631\u0633 \u06a9\u0627\u0645\u0644\u0627\u064b \u0639\u0645\u0644\u06cc\u0627\u062a\u06cc \u0628\u0627 SSL \u0648 \u062a\u0645\u062f\u06cc\u062f \u062e\u0648\u062f\u06a9\u0627\u0631 \u062f\u0627\u0631\u06cc\u062f \u06a9\u0647 \u0647\u0645\u0647 \u0627\u062c\u0632\u0627\u06cc\u0634 \u062f\u0631 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc \u0627\u06cc\u0632\u0648\u0644\u0647 \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f \u0648 \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc\u0634 \u0628\u0627 Volume\u0647\u0627\u06cc \u0646\u0627\u0645\u200c\u062f\u0627\u0631 \u0645\u0627\u0646\u062f\u06af\u0627\u0631\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0645\u0642\u062f\u0645\u0647 \u0648\u0631\u062f\u067e\u0631\u0633 \u06cc\u06a9 \u0633\u06cc\u0633\u062a\u0645 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u062d\u062a\u0648\u0627\u06cc (CMS) \u0631\u0627\u06cc\u06af\u0627\u0646 \u0648 \u0645\u062a\u0646-\u0628\u0627\u0632 \u0627\u0633\u062a \u06a9\u0647 \u0631\u0648\u06cc \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 MySQL \u0628\u0627 \u067e\u0631\u062f\u0627\u0632\u0634 PHP \u0628\u0646\u0627 \u0634\u062f\u0647. \u0628\u0647\u200c\u062f\u0644\u06cc\u0644 \u0645\u0639\u0645\u0627\u0631\u06cc \u067e\u0644\u0627\u06af\u06cc\u0646\u0650 \u062a\u0648\u0633\u0639\u0647\u200c\u067e\u0630\u06cc\u0631 \u0648 \u0633\u06cc\u0633\u062a\u0645 \u0642\u0627\u0644\u0628\u200c\u0633\u0627\u0632\u06cc\u200c\u0627\u0634\u060c \u0628\u06cc\u0634\u062a\u0631 \u0645\u062f\u06cc\u0631\u06cc\u062a\u0634 \u0631\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0631\u0627\u0628\u0637 \u0648\u0628 \u0627\u0646\u062c\u0627\u0645 \u062f\u0627\u062f. \u0627\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u0645\u062d\u0628\u0648\u0628\u064a\u062a \u0648\u0631\u062f\u067e\u0631\u0633 \u0647\u0646\u06af\u0627\u0645 \u0633\u0627\u062e\u062a \u0627\u0646\u0648\u0627\u0639 \u0645\u062e\u062a\u0644\u0641 \u0648\u0628\u200c\u0633\u0627\u06cc\u062a\u200c\u0647\u0627\u0633\u062a\u2014\u0627\u0632 \u0628\u0644\u0627\u06af \u062a\u0627 \u0635\u0641\u062d\u0627\u062a \u0645\u062d\u0635\u0648\u0644 \u062a\u0627 \u0633\u0627\u06cc\u062a\u200c\u0647\u0627\u06cc \u0641\u0631\u0648\u0634\u06af\u0627\u0647\u06cc. \u0627\u062c\u0631\u0627\u06cc \u0648\u0631\u062f\u067e\u0631\u0633 &hellip;<\/p>\n","protected":false},"author":9,"featured_media":7060,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[142,659],"tags":[],"class_list":["post-7059","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-142","category-wordpress"],"_links":{"self":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts\/7059","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/comments?post=7059"}],"version-history":[{"count":1,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts\/7059\/revisions"}],"predecessor-version":[{"id":7061,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts\/7059\/revisions\/7061"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/media\/7060"}],"wp:attachment":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/media?parent=7059"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/categories?post=7059"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/tags?post=7059"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}