اگر کار می کنید روی یک پروژه Django و شما می خواهید زندگی خود را آسان تر کنید – به خصوص وقتی صحبت از اجرای برنامه خود در محیط های مختلف می شود – Docker بهترین دوست جدید شماست.

Docker امکان بسته بندی برنامه Django خود را به همراه تمام وابستگی های آن ، به چیزی به نام “container. “

به این ترتیب ، همین کار را اجرا می کند روی رایانه شما ، رایانه هم تیمی شما ، یک سرور تست یا حتی در تولید.

هنگامی که من برای اولین بار استفاده از Docker را شروع کردم ، احساس کمی بیش از حد کرد. اما پس از تنظیم آن برای چند برنامه Django ، همه آنها کلیک کردند.

خبر خوب؟ من قصد دارم شما را از طریق آن قدم بزنم ، قدم به قدم ، به روشی که به راحتی قابل پیگیری باشد ، حتی اگر کاملاً جدید برای Docker باشید.

فهرست مطالب

  1. آنچه شما نیاز دارید

  2. چگونه پروژه Django خود را dockerize کنید

    • مرحله 1: یک پروژه Django را شروع کنید

    • مرحله 2: یک dockerfile ایجاد کنید

    • مرحله 3: یک مورد را اضافه کنید. txt

    • مرحله 4: ایجاد docker-compose.yml

    • مرحله 5: آن را اجرا کنید!

  3. مسائل مشترک

    • پورت قبلاً استفاده می شود؟

    • پایگاه داده کار نمی کند؟

  4. متداول

    • آیا برای توسعه به داکر نیاز دارم؟

    • آیا می توانم مهاجرت را در داخل Docker اجرا کنم؟

    • چگونه می توانم همه چیز را متوقف کنم؟

  5. نکته اضافی: از .dockerignore استفاده کنید

  6. آنچه شما ساخته اید

  7. می خواهید عمیق تر بروید؟

  8. خواندن بیشتر

آنچه شما نیاز دارید

قبل از شروع ، اطمینان حاصل کنید که چند مورد نصب شده اید:

  • پایتون 3 (هر نسخه ای که Django از آن پشتیبانی می کند)

  • دژنگو (البته)

  • Docker and Docker آهنگسازی
    👉 Docker را نصب کنید
    👉 آهنگسازی Docker را نصب کنید

پیشنهاد می‌کنیم بخوانید:  ایجاد و تجزیه Datetime در پایتون با Delorean

شما نیازی به متخصص بودن در Docker ندارید. من توضیح خواهم داد که هر قسمت با هم با هم می سازیم.

چگونه پروژه Django خود را dockerize کنید

مرحله 1: یک پروژه Django را شروع کنید

اگر قبلاً یک پروژه Django دارید ، می توانید از این قسمت پرش کنید.

در غیر این صورت ، خود را باز کنید terminal و اجرا:

django-admin startproject myproject
cd myproject

این یک پروژه جدید Django به نام ایجاد می کند myprojectبشر ساختاری مانند این را مشاهده خواهید کرد:

myproject/
├── manage.py
└── myproject/
    ├── __init__.py
    ├── asgi.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py

بیایید بگوییم این برنامه شما است که می خواهید داخل Docker اجرا کنید.

مرحله 2: یک dockerfile ایجاد کنید

در root از پروژه شما (همان پوشه manage.py) ، پرونده ای به نام ایجاد کنید Dockerfileبشر بدون پسوند پرونده – فقط Dockerfileبشر

این چیزی است که در داخل می رود:

# Use the official Python image
FROM python:3.10-slim

# Set environment variables
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1

# Set the working directory in the container
WORKDIR /app

# Install dependencies
COPY requirements.txt /app/
RUN pip install --upgrade pip && pip install -r requirements.txt

# Copy the rest of the code
COPY . /app/

بگذارید این را بشکنم:

  • FROM python:3.10-slim: این به Docker می گوید که از نسخه سبک Python 3.10 استفاده کند.

  • ENV: اینها فقط به سیاهههای تمیز کننده و عملکرد بهتر کمک می کنند.

  • WORKDIR /app: این فهرست کار پیش فرض را در داخل تنظیم می کند containerبشر

  • COPY وت RUN: این خطوط کد شما را در container و بسته های پایتون خود را نصب کنید.

مرحله 3: اضافه کردن requirements.txt

به یک فایل نیاز دارید که بسته های Python خود را لیست کنید.

فایلی به نام ایجاد کنید requirements.txt در root پوشه و اضافه کردن:

Django>=4.0,<5.0

در صورت رشد پروژه می توانید بعداً بیشتر اضافه کنید. در حال حاضر ، همین کافی است.

برای تولید لیست کاملی از وابستگی ها از محیط مجازی محلی خود ، اجرا کنید:

pip freeze > requirements.txt

مرحله 4: ایجاد docker-compose.yml

حال بیایید پرونده ای را ایجاد کنیم که به Docker می گوید چگونه همه چیز را با هم اجرا کنیم.

در شما root پوشه ، ایجاد docker-compose.yml:

version: '3.9'

services:
  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/app
    ports:
      - "8000:8000"

بیایید به خط خط برویم:

  • build: .: این به Docker می گوید استفاده از Dockerfile در پوشه فعلی

  • command: این سرور توسعه Django را در داخل اجرا می کند containerبشر

  • volumes: این کد شما را در container بنابراین تغییرات به صورت زنده منعکس می شوند.

  • ports: این نقشه بندر 8000 را در داخل Docker به بندر 8000 روی دستگاه شما

پیشنهاد می‌کنیم بخوانید:  هیچ ماژولی با نام 'mysql"" در پایتون

بنابراین اگر به http://localhost:8000، برنامه خود را خواهید دید.

مرحله 5: آن را اجرا کنید!

اکنون قسمت سرگرم کننده است. از شما terminal، اجرا:

docker-compose up --build

این به داکر می گوید:

  • ساخت container

  • وابستگی ها را نصب کنید

  • سرور Django را اجرا کنید

اگر همه چیز خوب پیش برود ، سیاهههای مربوط به سرور Django را مشاهده خواهید کرد ، و می توانید مرورگر خود را باز کرده و به آن بروید http://localhost:8000بشر

شما باید صفحه خوش آمدید Django را ببینید.

مسائل مشترک

پورت قبلاً استفاده می شود؟

اگر پورت 8000 شلوغ است ، این خط را تغییر دهید docker-compose.yml:

ports:
  - "8001:8000"

سپس برو به http://localhost:8001بشر

پایگاه داده کار نمی کند؟

اگر به یک پایگاه داده نیاز دارید (مانند PostgreSQL) ، می توانید یک سرویس دیگر به آن اضافه کنید docker-compose.ymlبشر در اینجا مثالی با PostgreSQL آورده شده است:

services:
  db:
    image: postgres
    environment:
      POSTGRES_DB: mydb
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/app
    ports:
      - "8000:8000"
    depends_on:
      - db

سپس ، خود را به روز کنید settings.py در Django برای استفاده از آن بانک اطلاعاتی.

متداول

آیا برای توسعه به داکر نیاز دارم؟

نه ، اما این به تمیز و سازگاری محیط شما کمک می کند. اگر در Docker کار کند ، در هر جایی کار خواهد کرد.

آیا می توانم مهاجرت را در داخل Docker اجرا کنم؟

بله فقط اجرا کنید:

docker-compose run web python manage.py migrate

چگونه می توانم همه چیز را متوقف کنم؟

مطبوعات Ctrl+C برای متوقف کردن سرور در حال اجرا ، و اگر می خواهید ظروف را حذف کنید:

docker-compose down

نکته اضافی: استفاده کنید .dockerignore

درست مثل .gitignore، شما می توانید ایجاد کنید .dockerignore پرونده برای جلوگیری از کپی کردن پرونده های غیر ضروری در docker containerبشر در اینجا یک مورد ساده وجود دارد:

__pycache__
*.pyc
*.pyo
*.pyd
.env
.git

آنچه شما ساخته اید

در حال حاضر ، شما:

  • یک پروژه Django ایجاد کرد

  • یک داکر ساخت container برای آن

  • تنظیم کردن docker-compose برای اجرای همه چیز

  • یاد گرفت که چگونه همه آن را به راحتی مدیریت کنید

پس از راحت بودن ، می توانید این مجموعه را با پرونده های استاتیک ، NGINX ، Gunicorn یا حتی Docker Docker آماده تولید گسترش دهید.

می خواهید عمیق تر بروید؟

اگر این احساس زیادی داشته باشد ، اشکالی ندارد. کمی تمرین می کند ، اما پس از چند بار این کار را انجام دادید ، داکر طبیعت دوم می شود.

شما زمان کمتری را برای اشکال زدایی در مورد تنظیمات تنظیمات و زمان بیشتری برای برنامه نویسی برنامه خود صرف خواهید کرد.

خواندن بیشتر

  • اسکله Documentation

  • اسناد رسمی جنگو

  • مرجع پرونده را تهیه کنید