سیستم های نرم افزاری امروزه کاملاً پیچیده شده اند. یک سیستم ممکن است شامل چندین سرویس توزیع شده باشد که هرکدام عملکردی خاص ارائه می دهند و به طور مستقل به روز می شوند. شروع توسعه پروژه ای از چنین پیچیدگی ها گاهی وقت گیر است ، به ویژه هنگامی که شما در حال حاضر با پشته نرم افزاری که می خواهید روی آن کار کنید آشنایی ندارید. این ممکن است به این دلیل باشد که ، بیشتر اوقات ، ما باید برای پیاده سازی کل پروژه ، مراحل جدی را دنبال کنیم و اگر در این مرحله اشتباه کنیم ، ممکن است مجبور شویم که همه چیز را دوباره شروع کنیم.
به عنوان یک توسعه دهنده ، در حال بدست آوردن درک سریع نحوه اتصال همه پشته ها به یکدیگر و داشتن آسان اسکلت پروژه ممکن است یک انگیزه بسیار خوب برای استفاده از آن پشته خاص برای پروژه های آینده باشد.
علاوه بر این ، تعداد زیادی بسته نرم افزاری منبع باز وجود دارد که توسعه دهندگان می توانند برای تنظیمات خود از آنها استفاده کنند. تهیه راهکار مستقیم برای استقرار این پشته های نرم افزاری به منظور بررسی آنها یک مسئله مهم است که به دنبال ساده سازی توسعه نرم افزار هستید و به توسعه دهندگان امکان می دهد گزینه های مختلف را کشف کنند.
برای برطرف کردن این موضوع ، ما یک مخزن گیتوب با نمونه برنامه ها را جمع آوری کرده ایم که می توان به راحتی با Docker Compose مستقر کرد. نام مخزن بسیار جذاب است و حاوی یک لیست سرنوشت ساز از نمونه برنامه های برنامه نویسی است که می تواند یک نقطه شروع خوب برای چگونگی ادغام سرویس های مختلف با استفاده از یک پرونده نوشتن و مدیریت نحوه استقرار آنها با Docker Compose باشد.
مخزن بسیار جذاب و کامپوزیت ایجاد شده است تا راهی سریع و ساده برای توسعه دهندگان فراهم شود تا تنظیمات مبتنی بر نوشتن را با پشته های نرم افزاری مختلف تجربه کنند. علاوه بر این ، ما امیدواریم که شما مایل باشید بهترین نمونه های خود را برای نوشتن پرونده ها برای پشته های مختلف که قبلاً در مخازن موجود نیستند و یا نمونه های فعلی را برای استفاده همه بهتر کنید ، به اشتراک بگذارید.
تنظیمات ارائه شده در حال حاضر در مخزن بسیار جذاب. به طور عمده در دو دسته قرار می گیرد:
- اسکلت برنامه: برای شروع کار پروژه مفید است. ما می توانیم اسکلت های کاربردی متفاوتی با چندین سرویس مختلف که قبلاً به هم وصل شده اند و آماده راه اندازی با docker-compose باشیم ، پیدا کنیم ؛
- تنظیمات با پشته های مختلف نرم افزار منبع باز اینها آماده تولید نیستند ، آنها بیشتر برای استفاده شخصی و خانگی و یا صرفاً برای توسعه دهندگان در نظر گرفته شده است تا در محیط توسعه محلی خود با آنها آشنا شوند.
همه نمونه های موجود در مخزن همانطور که هستند ارائه می شوند ، همه می توانند هر نمونه را مطابق نیاز خود تنظیم کنند.
ما در مورد هر گروه دیگر و مزایای آنها می توانند بحث کنیم.
Kickoff یک پروژه را با یک نمونه برنامه
برای اینکه بتوانید نمونه ها را از مخزن اجرا کنید ، مطمئن شوید که قبلاً نصب کرده اید: [19659013] سپس کلون گیت یا یک یا چند نمونه از مخزن عالی و کامپوزیت را بارگیری کنید.
$ git clone https://github.com/docker/awesome-compose.gitلاف19659015- ] cd awesome-آهنگسازی
در ریشه هر نمونه docker-compose.yml وجود دارد. این شامل تعریف و ساختار برنامه و دستورالعمل نحوه سیم کشی اجزای برنامه است.
نمونه ای را که مطابق با نیازهای شما باشد شناسایی کنید و فهرست آن را باز کنید. نامهای فهرست نمونه از الگوی بسیار ساده ای متشکل از نامهای مؤلفه جدا شده توسط پیروی می کند – [. این به ما امکان می دهد نمونه مورد نیاز پروژه خود را به سرعت شناسایی کنیم. برای این تمرین ، اجازه دهید از نمونه nginx-flask-mysql استفاده کنیم.
چند مرحله ساده برای دنبال کردن و اجرای اسکلت برنامه وجود دارد و قادر به اصلاح آن هستیم.
نمونه برنامه را بکار بگیرید
فهرست راهنما را باز کنید و آنرا با docker-compose اجرا کنید:
$ cd nginx-flask-mysql
$ docker-compose up -d
ایجاد حجم "nginx-flask-mysql_db-data" با درایور پیش فرض
باطن ساختمان
مرحله 1/8: از پایتون: 3.8-alpine
3.8-alpine: بیرون کشیدن از کتابخانه / پایتون
…
…
ایجاد nginx-flask-mysql_db_1 … انجام شده است
ایجاد nginx-flask-mysql_proxy_1 … انجام شده است
ایجاد nginx-flask-mysql_backend_1 … انجام شده است
بررسی کنید سه ظرف در حال اجرا است ، یکی برای هر سرویس: [19659014] $ docker-compose ps
Name Command State بنادر
———————————————————————————————————————————————
nginx-flask-mysql_backend_1 / bin / sh -c run run-hos… Up 0.0.0.0:5000->5000/tcpolis19459020 معروفnginx-flask-mysql_db_1 docker-entrypoint.sh –def… Up 3306 / Tcp، 33060 / tcp
nginx-flask-mysql_proxy_1 nginx -g daemon off؛ بالاتر از 0.0.0.0:80->80/tcp
پورت Query 80 ظرف پروکسی با حلقه یا در مرورگر وب برای داشتن پس زمینه داده ها را از DB عبور دهید:
$ curl localhost: 80
تغییر و به روز رسانی نمونه برنامه
اجازه دهید فرض کنیم که ما باید سرور برنامه را تغییر دهیم ، در این صورت با پسوند خدماتی که در پیتون با استفاده از چارچوب Flask اجرا می شود. روش برگشت پیامی که قبلاً پرسیدیم را می توان در زیر مشاهده کرد.
@ server.route ('/')
def listBlog ():
global conn
if not conn:
conn = DBManager (password_file = '/ run / secret / db-password' )
conn.populate_db ()
rec = conn.query_titles ()
rep = "
for c in rec:
پاسخ = پاسخ + '
'
بازگشت پاسخ
فرض کنید ما این روش را تغییر می دهیم تا حذف کنیم تگ های html:
@ server.route ('/')
def listBlog ():
…
for [194590019] c در rec:
پاسخ = پاسخ + '' + c + ''
پاسخ بازگشت پاسخ
چون همه ظروف ما در حال کار هستند ، گردش منطقی خواهد بود. برای متوقف کردن سرویس backend ، بازسازی تصویر آن و اجرای مجدد برای تغییر در ما. انجام این کار در طول توسعه بسیار ناکارآمد خواهد بود.
ما به نوبه خود می توانیم پرونده سازنده docker را هک کرده و زیر سرویس باطن را اضافه کنیم. تنظیمات:
باطن:
build: backend
restart: همیشه
دوره:
– ./ backend: / code
…
این به Docker دستور می دهد تا کد منبع باطن را به مسیر کانتینر از جایی که در هنگام اجرای کانتینر اجرا می شود سوار کنید.
اکنون ، همه کاری که ما باید انجام دهیم اینست که مجدداً باطن را راه اندازی کنیم تا کد تغییر یافته اجرا شود.
$ docker-compose backend restart
شروع مجدد nginx-flask-mysql_backend_1 … انجام شده
با پرسیدن مجدد پروکسی ، می توانیم تغییر را مشاهده کنیم:
[ curl localhost: 80 curl localhost: 80 ] پست وبلاگ # 1 پست وبلاگ # 2 پست وبلاگ # 3 پست وبلاگ # 4
استقرار و داده های پاکسازی
برای حذف همه ظروف اجرا شده:
$ docker-compose
توقف nginx- flask-mysql_backend_1 … انجام شده است
متوقف کردن nginx-flask-mysql_db_1 … انجام شده است
توقف nginx-flask-mysql_proxy_1 … انجام شده است
حذف nginx-flask-mysql_backend_1 … انجام شده
حذف
حذف nginx-flask-mysql_proxy_1 … انجام شد
حذف شبکه nginx- flask-mysql_backnet
حذف شبکه nginx-flask-mysql_frontnet
با اضافه کردن پارامتر -v به فرمان down ، تضمین می شود که تمام داده های میزبانی شده توسط سرویس db حذف می شوند: [19659014] $ docker-compose down -v
…
حذف حجم nginx-flask-mysql_db-data
برای نتیجه گیری از این قسمت ، نمونه های ارائه شده در مخزن بسیار جذاب می تواند به توسعه دهندگان کمک کند. در طی چند دقیقه تمام مؤلفه های پروژه خود را با هم جمع کنید. این امر به ویژه برای مبتدیان در توسعه با برنامه های حاوی کانتینر که می توان با docker-compose مدیریت کرد مفید است.
تنظیمات پشته های نرم افزاری مختلف
نوع دوم نمونه هایی که مخزن عالی و کامپوزیت در آن موجود است فایلهای کامپوزیت برای تنظیم سیستم عامل های مختلف مانند Nextcloud ، WordPress ، Gitea و غیره. این نمونه ها بیشتر شامل یک فایل کامپوزیت هستند که یک تنظیم اولیه را برای هر یک از مؤلفه ها تعریف می کنند. هدف از این کار این است که توسعه دهندگان راحت تر به پشته های نرم افزاری مختلفی ارائه دهند که می توانند سریعاً به آنچه ارائه می دهند و با آنها توجیه می شوند ، بپردازند.
بگذارید تمرین بعدی را برای تمرین بعدی در نظر بگیریم. Nextcloud یک بستر اشتراک گذاری فایل منبع باز است که هر کسی می تواند برای استفاده خصوصی خود نصب کند. تنظیمات موجود در مخزن بسیار جذاب با توجه به دستورالعمل های موجود در صفحه رسمی Nextcloud در Docker Hub ، جمع آوری می شوند.
برای استقرار آن ، فهرست دایره نمونه بعدی Cloud را که ترجیح می دهید انتخاب کنید:
$ cd nextcloud-postgres /
$ ls
docker-compose.yaml README.md
و اجرای آن را با docker compose:
$ docker-kompose up -d
شبکه "nextcloud-postgres_default" با درایور پیش فرض
ایجاد جلد "nextcloud-postgres_db_data" با درایور پیش فرض
ایجاد حجم "nextcloud-postgres_nc_data" با درایور پیش فرض
در حال کشیدن nc (بعدی: apache: در حال بیرون کشیدن از کتابخانه / کلاس بعدی
…
ایجاد Cloud بعدی-postgres_nc_1 … انجام شده است
ایجاد Cloud بعدی-postgres_db_1 … انجام شد
بررسی کنید که ظروف در حال اجرا هستند:
$ docker-compose ps
نام بنادر فرماندهی دولت
———————————————————— ————————————————– ———————————————–
پست بعدی cloud-postgres_db_1 docker-entrypoint.sh ارسال پیام 5432 / tcp
nextcloud-postgres_nc_1 /entrypoint.sh apache2-for… Up 0.0.0.0 : 80-> 80 / Tcp
$ docker ps
دستورالعمل شناسه کانتینر ایجاد شده
نام های پراسترس وضعیت
a1381bcf5b1c nextcloud: apache "/entrypoint.sh apac …" 14 دقیقه پیش
تا حدود یک دقیقه 0.0.0.0:80->80/tcp nextcloud-postgres_nc_1
پست های ec66a5aff8ac: alpine "docker-entrypoint.s …" 14 دقیقه قبل
در حدود یک دقیقه 5432 / tcp nextcloud-postgres_db_1
تنها در چند دقیقه (بستگی به اتصال به اینترنت) ما یک سیستم عامل بعدی Cloud داریم که روی دستگاه محلی ما کار می کند. با باز کردن یک پنجره مرورگر و رفتن به localhost: 80 باید ما را در صفحه اولیه سازی Nextcloud قرار دهد:

به طور مشابه با اولین تمرین ، برای حذف همه ظروف اجرا شده:
$ docker-compose پایین
متوقف کردن nextcloud-postgres_nc_1 … انجام شده است
متوقف کردن nextcloud-postgres_db_1 … انجام شده است
حذف nextcloud-postgres_nc_1 … انجام شده است
حذف Cloud-postgres_db_1_ بعدی … -v پارامتر برای حذف حجم در جایی که داده های ابر بعدی در آن ذخیره می شوند حذف شده است. مراحل مشابه باید برای سایر نمونه های پشته های نرم افزاری مفید دنبال شود.
خلاصه
پایین آمدن مانع در استقرار پشته های نرم افزاری مختلف ، توسعه دهندگان بیشتر و بیشتر را قادر می سازد که نگاهی به آنها نشان دهند و بالقوه از آنها برای پروژه های خود استفاده کنند. [19659002] مخزن عالی با آهنگسازی مخزن با هدف جمع آوری پرونده های نوشتن و نمونه برنامه ها ایجاد شده است که ممکن است برای هر کسی که علاقه مند به برنامه های کانتینر باشد مفید باشد.
خواستار مشارکت
باشید. آهنگسازی و قبلاً پشته های جالبی را ایجاد کرده اند که ممکن است برای دیگران مفید باشد ، بسیار توصیه می شود که آنها را به مخزن اضافه کرده و آنها را به اشتراک بگذارید. پیشرفت های موجود در نمونه های فعلی نیز بسیار قابل تقدیر است!