کرلی‌برکت
کرلی‌برکت
خواندن ۳ دقیقه·۳ سال پیش

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

What's
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 Flask
app = 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]

کار هایی که داره انجام میشه به این شکله:

  1. تعریف می‌کنیم که ایمیج baseمون پایتون 3.7 هست که میاد یک سیستم عامل با python3.7 رو شبیه سازی می‌کنه(در واقع ایمیجش رو دانلود می‌کنه و رانش می‌کنه)
  2. مثل دستور cd عمل می‌کنه و دایرکتوری دستوراتی که انجام میدیم رو به code عوض می‌کنه
  3. متغیر محیطی FLASK_APP که بالاتر اشاره شد رو ست می‌کنه(گفتیم که واسه ران کردن اپ فلسک نیازه)
  4. متغیر محلی FLASK_RUN_HOST به برنامه میگه که در چه آیپی‌ای باید ران بشه که خب لوکالمون هست و به سیستم اصلی اشاره داره
  5. در اینجا پیش‌نیاز های برنامه رو نصب می‌کنیم
  6. پورت 5000 فروارد میشه به سیستم اصلی
  7. کد ها و پوشه های موجود در دایرکتوری که هستیم رو میریزه تو اون code/ی که قبلا cd کردیم داخلش
  8. دستوری 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
Dockerizing a project - curlyBracket

که خب اگر به لاگش دقت کنید می‌تونین ببینین که یکی یکی دستورات درون Dockerfile رو ران می‌کنه(اگه از سیستم عامل های arch-base استفاده می‌کنین نیازه که docker-compose رو نصب کنین: sudo pacman -S docker-compose)

و خب الان برنامه ما ران شده و می‌تونیم از طریق آیپی و پورتی که در لاگش نوشته واردش بشیم:

curlyBracket Flask
curlyBracket Flask

و خب کلیت موضوع به همین شکله صرفا کانفیگ های متفاوت و پیچیده‌تری داریم که خب خیلی هم سخت نیست چون میشه از داکیومنت خود داکر کمک گرفت، امیدوارم مورد پسندتون واقع شده باشه و فعلا☘️

نویسنده: محمد میرآب
اینستاگرام: curlybracket_ir
تلگرام: @curlybracket

منبع: https://docs.docker.com/compose/gettingstarted/

flaskdockerpythonpython3
گروه کرلی‌برکت
شاید از این پست‌ها خوشتان بیاید