آنچه در این مقاله میخوانید
نحوه ساخت محیط توسعه پایتون در سرور مجازی به زبان ساده
۱۸ اردیبهشت ۱۴۰۴
اگر با پروژههای پایتون کار کرده باشید، حتما میدانید که راهاندازی یک محیط توسعهی استاندارد، بسیار وقتگیر و گاهی دردسرساز است، مخصوصا زمانی که میخواهید پروژه خود را روی سیستمهای مختلف اجرا کنید یا با چند شخص دیگر روی آن پروژه کار کنید. تفاوت نسخهی پایتون در سیستمها میتواند باعث شود کدی که روی لپتاپ شما اجرا میشود، در سیستم دیگری ارور دهد، حالا موضوع مقاله ما این است که چگونه این مشکل را حل کنیم! داکر یک ابزار کانتینرسازی است که با استفاده از آن میتوانید همهی پکیجها و تنظیمات مورد نیاز پروژهتان را داخل کانتینرهای آن تعریف کنید و مطمئن باشید که هر سیستم عاملی، همان محیط را میتوانید داشته باشد، به عبارتی با داکر، پروژه شما مستقل از سیستمعامل خواهد شد و قابل اجرا در تمامی سیستمعاملها خواهد بود.
در این آموزش از لیارا، یک پروژه ساده پایتون میسازیم. سپس با نوشتن Dockerfile مشخص میکنیم که محیط پایتون ما دقیقا چطور باید باشد، وابستگیها و پکیجها را داخل کانتینر نصب میکنیم تا هیچ وابستگی به سیستمعامل میزبان نداشته باشیم. در آخر تنظیمات مربوط به پورتها و Volumeها را انجام میدهیم تا راحتتر بتوانیم بین فایلهای لوکال و داکر تعامل کنیم. تا پایان این آموزش همراه ما باشید.

در ادامه بخوانید:
- داکر چیست و چرا اینقدر محبوب است؟
- چرا برای پایتون باید از داکر استفاده کنیم؟
- ایجاد پروژه پایتون
- نوشتن یک Dockerfile
- ایجاد Docker Image
- دانلود سه مخزن GitHub به لوکال هاست
- ایجاد سه کانتینر با bind mount
- ورود به کانتینر و دسترسی به دایرکتوری
- معرفی بهترین روش کانتینرسازی
- جمعبندی
- سوالات متداول
داکر چیست و چرا اینقدر محبوب است؟
داکر(Docker) یکی از پرطرفدارترین پلتفرمهای متنباز برای کانتینرسازی است، که امنیت بیشتر، مدیریت راحتتر و سرعت بالاتر در استقرار اپلیکیشنها را ارائه میدهد. این پلتفرم کار را برای توسعهدهندگان بسیار آسان کرده است، بهطوری که تبدیل اپلیکیشنها به کانتینر را بدون هیچ مشکلی انجام میدهد.
داکر به دلیل ایزولهسازی محیطها، بسیار محبوب است و خصوصیتهای آن باعث شده که به استانداردی برای توسعهدهندگان تبدیل شود.
برای آشنایی با آموزش گامبهگام نصب داکر روی اوبونتو 22.04 مقاله زیر را بخوانید.
نصب داکر روی اوبونتو
چرا برای پایتون باید از داکر استفاده کنیم؟
حتما میدانید، داکر با پشتیبانی از زبانهای مختلف از جمله پایتون، شما را قادر میسازد تا برنامههایتان را در یک فرمت یکپارچه توزیع کنید و آنها را روی سیستمهای میزبان و سرورهای ابری مختلف اجرا کنید. با اینکار میتوانید اپلیکیشن خود را بدون نیاز به ابزارهای جانبی و بهصورت یکجا و با تمامی وابستگیهایش به سیستمهای مختلف انتقال دهید.
همین حالا هاست ابری Python رو سفارش بدید و پروژهتون رو با سرعت بالا راهاندازی کنید!
✅ دامنه رایگان ✅ ترافیک نامحدود ✅ هزینه ساعتی
خرید هاست ابری Python
ایجاد پروژه پایتون
ابتدا با دستور زیر یک پروژه پایتون جدید ایجاد کنید:
mkdir my_python_project
cd my_python_project
سپس داخل این فولدر یک فایل پایتون بسازید:
# app.py
print("Hello, Docker!")
نوشتن یک Dockerfile
حالا در فولدر پروژهای که ساختید، یک فایل بهنام Dockerfile
ایجاد کنید.
محتوای این فایل باید بهصورت زیر باشد:
FROM python:latest
WORKDIR /app
COPY . /app
CMD ["python", "app.py"]
ایجاد Docker Image
با توجه به اینکه Dockerfile
را نوشتید، اکنون باید یک تصویر داکر بسازید. وارد فولدر پروژهی خود شوید و دستور زیر را اجرا کنید:
docker build -t my-python-app .
تصویر شما ساخته شد، برای اجرای آن کافی است دستور زیر را وارد کنید:
docker run my-python-app
خروجی این دستور پیام Hello, Docker!
میباشد که از app.py
چاپ شده است.
با اینکار، یک Docker Image برای پروژه پایتون خود ایجاد کردهاید و میتوانید آن را در هر سیستم دیگری که داکر نصب است، اجرا کنید.
برای آشنایی با ویژگیهای، مزیتها، معایب، عملکرد و اجزای داکر مقاله زیر را بخوانید.
داکر چیست؟
دانلود سه مخزن GitHub به لوکال هاست
در این مرحله برای دانلود مخزنها از گیتهاب به سیستم لوکال خود، کدهای زیر را اجرا کنید:
git clone https://github.com/username/repo1.git
git clone https://github.com/username/repo2.git
git clone https://github.com/username/repo3.git
برای مخزن اول (مثلاً CPython)
git clone https://github.com/python/cpython.git
برای مخزن دوم (مثلاً Requests)
git clone https://github.com/requests/requests.git
برای مخزن سوم (مثلاً Flask)
git clone https://github.com/pallets/flask.git
زمانی که این دستورات را اجرا میکنید، سه مخزن از گیتهاب به دایرکتوری فعلی شما کلون (clone) میشوند. بعد از اتمام کلون، میتوانید فولدرهای cpython
, requests
, و flask
را در دایرکتوری فعلی مشاهده کنید.
ایجاد سه کانتینر با bind mount
برای ایجاد سه کانتینر داکر و استفاده از bind mount برای هر کدام از سه مخزن دانلود شده، کدهای زیر را اجرا کنید:
docker run -dt --name container1 -v /path/to/repo1:/app my-boto3-image /bin/bash
docker run -dt --name container2 -v /path/to/repo2:/app my-boto3-image /bin/bash
docker run -dt --name container3 -v /path/to/repo3:/app my-boto3-image /bin/bash
سپس برای اتصال سه مخزن گیتهاب به سه کانتینر داکر، باید مسیر دقیق هر کدام از مخازن کلون شده را بهجای /path/to/repo1
, /path/to/repo2
و /path/to/repo3
قرار دهید.
با فرض اینکه، مخازن را در دایرکتوری فعلی خود کلون کردهاید، دستوراتی که باید استفاده کنید به شکل زیر خواهند بود:
docker run -d --name container1 -v $(pwd)/repo1:/app python:latest
docker run -d --name container2 -v $(pwd)/repo2:/app python:latest
docker run -d --name container3 -v $(pwd)/repo3:/app python:latest
با اجرای این دستورات، سه کانتینر ایجاد میکنید که هر کدام به یکی از سه مخزن گیتهاب که کلون کردهاید، متصل میشوند.
برای آموزش مرحلهبهمرحله نصب پایتون در سرور مجازی اوبونتو، میتوانید مقاله زیر را مطالعه کنید.
نصب پایتون در اوبونتو
ورود به کانتینر و دسترسی به دایرکتوری
در نهایت، وارد هر کانتینر شوید و با اجرای دستورات زیر مطمئن شوید که میتوانید به دایرکتوری مربوط به هر مخزن دسترسی پیدا کنید:
docker exec -it container1 /bin/bash
cd /app
ls
docker exec -it container2 /bin/bash
cd /app
ls
docker exec -it container3 /bin/bash
cd /app
ls
خروجی دستورات بالا بهصورت زیر خواهد بود:
کانتینر اول (container1)
$ docker exec -it container1 /bin/bash
root@container1:/# cd /app
root@container1:/app# ls
repo1_folder1
repo1_folder2
file1.py
file2.py
کانتینر دوم (container2)
$ docker exec -it container2 /bin/bash
root@container2:/# cd /app
root@container2:/app# ls
repo2_folder1
repo2_folder2
script1.py
script2.py
کانتینر سوم (container3)
$ docker exec -it container3 /bin/bash
root@container3:/# cd /app
root@container3:/app# ls
repo3_folder1
repo3_folder2
main.py
readme.md
در نهایت که همه مراحل را طی کردیم، یک محیط توسعه پایتون کاملا کانتینر شده با داکر را داریم.
معرفی بهترین روش کانتینرسازی
برای استقرار سریع برنامههای Docker میتوانید از مستندات لیارا استفاده کنید. حال اگر میخواهید پروژه پایتون خود را با داکر کانتینر کنید چند نکته وجود دارد که بهتر است رعایت کنید:
- استفاده از تگهای مشخص برای داکر: به جای استفاده از
python:latest
از تگهای ثابت مثلpython:3.9-slim
استفاده کنید تا همیشه نسخه دقیقی از پایتون را داشته باشید. - جدا کردن وابستگیها از کد: وابستگیها را در یک فایل
requirements.txt
لیست کنید و اجازه دهید داکر خودش نصب کند. - استفاده از WSGI برای محیط تولید: برای محیط تولید از سرور WSGI مثل
Gunicorn
استفاده کنید تا اپلیکیشن عملکرد بهتری داشته باشد. - اجرا با کمترین دسترسی: همیشه کانتینرها را با کمترین سطح دسترسی اجرا کنید و هرگز از
root
استفاده نکنید. - مدیریت وضعیتهای ناسالم: از
Docker Health Checks
برای بررسی سلامت کانتینرها استفاده کنید تا از بروز مشکلات پیشگیری کنید. - رفع آسیبپذیریهای امنیتی: از ابزارهای اسکن مثل
Trivy
برای یافتن و رفع آسیبپذیریهای امنیتی در تصاویر داکر استفاده کنید.
با ثبتنام در لیارا، ۱۰۰ هزار تومان اعتبار هدیه بگیرید و از سرور مجازی رایگان با کیفیت بالا و امکانات عالی استفاده کنید!
پشتیبانی ۲۴ ساعته برای کاربران سرور مجازی رایگان!
خرید سرور مجازی رایگان
جمعبندی
تبریک:) شما یک محیط توسعه پایتون کاملا کانتینر شده با داکر را ایجاد کردید. در این آموزش، یک پروژه پایتون ایجاد کردید و داکر فایل آن را نیز ساختید. سپس وابستگیهای آن مانند flask را تصب از گیتهاب نصب کردید تا محیط توسعه پایتون بهدرستی آماده شود. در آخر سه مخزن گیتهاب را کلون کردید و هر کدام را در کانتینر جداگانه با استفاده از bind mount راهاندازی کردید. در آخر هم با ورود به کانتینرها، صحت دسترسی به مخازن را بررسی کردید.
نتیجه این کار، ایجاد یه محیط پایتون کاملاً مستقل و قابل حمل هست که در هر سیستم یا سرور ابری، میتواند تجربهای مشابه با هاست پایتون را برای شما فراهم کند.
سوالات متداول
چرا باید از داکر برای کانتینری کردن محیط پایتون استفاده کنم؟
زیرا با داکر محیط توسعهتان را از سیستمعامل جدا میکنید، و تمامی وابستگیها از بین خواهند رفت.
آیا این روش برای پروژههای بزرگ هم مناسب است؟
بله، داکر بهخصوص برای پروژههای بزرگ که نیاز به استقرار روی سرورهای مختلف دارند ،بسیار کاربردی است.
آیا نیاز به تغییر کد برنامه برای استفاده از داکر دارم؟
خیر، بهطور کلی شما نیاز به تغییر زیادی در کد برنامه برای استفاده از داکر ندارید.
چطور میتوانم بر عملکرد کانتینرها نظارت کنم؟
برای نظارت بر عملکرد کانتینرهای داکر، میتوانید از ابزارهایی مثل docker stats
برای مشاهده اطلاعات مصرف منابع کانتینر استفاده کنید.