داکر چیست؟! (پارت سوم: داکرایز کردن یک پروژه آزمایشی)

What's خب بعد از نصب داکر میرسیم به بخش استفاده از اون، در این آموزش من از docker cli استفاده می‌کنم و سمت نسخه دسکتاپ نمیرم(اگه نصبش نکردین می‌تونین پارت قبل آموزش رو از در لینک زیر مطالعه کنید) https://virgool.io/Rocket/%D8%AF%D8%A7%DA%A9%D8%B1-%DA%86%DB%8C%D8%B3%D8%AA-%D9%BE%D8%A7%D8%B1%D8%AA-2-jicmlkfhpujv در این آموزش قرار هست که یک پروژه flask رو داکرایز کنیم که یعنی به شکل یک بسته داکر درش بیاریم...اول میریم سراغ برنامه فلسک که می‌تونین یک فولدر درست کنین و کد زیر رو درون app.py پیست کنین:from flask import Flaskapp = Flask(__name__)@app.route(&quot/&quot)def hello_world():return &quot<body style='height: 90%; text-align:center; display:table; width:100%;'><h1 style='display:table-cell; vertical-align:middle'>curlyBracket!</h1></body>&quotکد بالا یک برنامه فلسک خیلی ساده هست که متن !curlyBracket رو وسط مرورگر نمایش میده، حالا در حالت عادی واسه ران کردنش باید از دستور های زیر استفاده کنیم:FLASK_APP=app.py python3 -m flask runاما حالا که می‌خوایم ببریمش داخل داکر دیگه نمی‌تونیم خودمون اینا رو اجرا کنیم و داکر باید این ها رو به صورت اتومات انجام بده،حالا باید فایل Dockerfile رو ایجاد کنیم در همون شاخه تا داکر بتونه کار هایی که باید انجام بده رو به صورت لیست در اختیار داشته باشه و یکی یکی انجامشون بده، خب Dockerfile ما به این صورت میشه:# syntax=docker/dockerfile:1 FROM python:3.7-alpine WORKDIR /code ENV FLASK_APP=app.py ENV FLASK_RUN_HOST=0.0.0.0 RUN apk add --no-cache gcc musl-dev linux-headers RUN pip install flask EXPOSE 5000 COPY . . CMD [&quotpython3&quot, &quot-m&quot, &quotflask&quot, &quotrun&quot]کار هایی که داره انجام میشه به این شکله:تعریف می‌کنیم که ایمیج baseمون پایتون 3.7 هست که میاد یک سیستم عامل با python3.7 رو شبیه سازی می‌کنه(در واقع ایمیجش رو دانلود می‌کنه و رانش می‌کنه)مثل دستور cd عمل می‌کنه و دایرکتوری دستوراتی که انجام میدیم رو به code عوض می‌کنهمتغیر محیطی FLASK_APP که بالاتر اشاره شد رو ست می‌کنه(گفتیم که واسه ران کردن اپ فلسک نیازه)متغیر محلی FLASK_RUN_HOST به برنامه میگه که در چه آیپی‌ای باید ران بشه که خب لوکالمون هست و به سیستم اصلی اشاره دارهدر اینجا پیش‌نیاز های برنامه رو نصب می‌کنیمپورت 5000 فروارد میشه به سیستم اصلیکد ها و پوشه های موجود در دایرکتوری که هستیم رو میریزه تو اون code/ی که قبلا cd کردیم داخلشدستوری python3 -m flask run رو ست می‌کنه واسه ران کردن ایمیج که باعث میشه برناممون ران بشهقدم بعدی ساخت فایل docker-compose.yml هست که در اون سرویس های مورد نیازمون رو اضافه می‌کنیم که در اینجا ما صرفا از وب استفاده می‌کنیم و داریم پورت رو فروارد می‌کنیم:version: &quot3.9&quot services: web: build: . ports: - &quot8000:5000&quotکاری که انجام میده اینه که یک ایمیج ساخته شده به نام web رو استفاده می‌کنه و میاد پورت 8000 رو share می‌کنه بین سیستم اصلی و سیستم شبیه‌سازی شده درون داکر تا بتونیم به اون برنامه‌ای که در پورت داخلی سیستم درون داکر بالا اومده وصل بشیم.بعد از اینکه تنظیمات بالا رو انجام دادیم می‌تونیم به راحتی با دستور:sudo docker-compose upپروژمون رو داکرایز کنیم که خروجیش به این صورت خواهد بود:Dockerizing a project - curlyBracketکه خب اگر به لاگش دقت کنید می‌تونین ببینین که یکی یکی دستورات درون Dockerfile رو ران می‌کنه(اگه از سیستم عامل های arch-base استفاده می‌کنین نیازه که docker-compose رو نصب کنین: sudo pacman -S docker-compose)و خب الان برنامه ما ران شده و می‌تونیم از طریق آیپی و پورتی که در لاگش نوشته واردش بشیم:curlyBracket Flaskو خب کلیت موضوع به همین شکله صرفا کانفیگ های متفاوت و پیچیده‌تری داریم که خب خیلی هم سخت نیست چون میشه از داکیومنت خود داکر کمک گرفت، امیدوارم مورد پسندتون واقع شده باشه و فعلا☘️نویسنده: محمد میرآباینستاگرام: curlybracket_irتلگرام: @curlybracketمنبع: https://docs.docker.com/compose/gettingstarted/