blog.posts.docker-odoo-deployment-guide.title

blog.posts.docker-odoo-deployment-guide.description

E

ECOSIRE Research and Development Team

ECOSIRE ٹیم

5 مارچ، 20265 منٹ پڑھیں1.1k الفاظ

ڈوکر اوڈو تعیناتی: پیداوار کے لیے تیار کنٹینر سیٹ اپ

Docker پیداواری ماحول میں Odoo کے لیے معیاری تعیناتی کا طریقہ بن گیا ہے، جس میں 10 ملین سے زیادہ Odoo Docker امیج Docker Hub کو کھینچتی ہے۔ کنٹینرائزڈ تعیناتی دوبارہ پیدا کرنے کے قابل ماحول، آسان اسکیلنگ، آسان بیک اپ، اور Odoo مثالوں کے درمیان صاف علیحدگی فراہم کرتی ہے۔ یہ گائیڈ ایک مکمل پروڈکشن کے لیے تیار Docker Odoo سیٹ اپ کا احاطہ کرتا ہے۔

اہم ٹیک ویز

  • ڈوکر کمپوز آرکیسٹریٹس Odoo، PostgreSQL، اور Nginx کو منسلک خدمات کے طور پر
  • مستقل حجم اس بات کو یقینی بناتا ہے کہ ڈیٹا کنٹینر کے دوبارہ شروع ہونے اور اپ ڈیٹس کے زندہ رہتا ہے۔
  • Nginx ریورس پراکسی SSL ختم کرنے، جامد فائل کیشنگ، اور لوڈ بیلنسنگ کو ہینڈل کرتی ہے
  • خودکار بیک اپ کم سے کم دستی مداخلت کے ساتھ ڈیٹا کے نقصان سے بچاتے ہیں۔

فن تعمیر کا جائزہ

پروڈکشن اوڈو ڈوکر کی تعیناتی تین بنیادی خدمات پر مشتمل ہے:

  1. Odoo ایپلیکیشن سرور: ویب سرور اور ایپلیکیشن لاجک کو چلانے والا اوڈو کنٹینر
  2. PostgreSQL ڈیٹابیس: ایک وقف شدہ ڈیٹا بیس کنٹینر جو تمام Odoo ڈیٹا کو محفوظ کرتا ہے
  3. Nginx ریورس پراکسی: SSL کو ہینڈل کرتا ہے، جامد فائلوں کو پیش کرتا ہے، اور Odoo کو پراکسی کی درخواست کرتا ہے

اختیاری خدمات میں Redis (کیشنگ اور سیشن اسٹوریج کے لیے)، ایک بیک اپ کنٹینر (خودکار ڈیٹا بیس ڈمپ) اور نگرانی (Prometheus + Grafana) شامل ہیں۔


ڈوکر کمپوز کنفیگریشن

تعیناتی کی بنیاد ایک docker-compose.yml فائل ہے جو تمام خدمات کی وضاحت کرتی ہے:

version: "3.8"

services:
  odoo:
    image: odoo:17.0
    depends_on:
      - db
    ports:
      - "8069:8069"
      - "8072:8072"
    volumes:
      - odoo-data:/var/lib/odoo
      - ./config:/etc/odoo
      - ./addons:/mnt/extra-addons
    environment:
      - HOST=db
      - PORT=5432
      - USER=odoo
      - PASSWORD=odoo_db_password
    restart: unless-stopped

  db:
    image: postgres:16
    environment:
      - POSTGRES_DB=postgres
      - POSTGRES_USER=odoo
      - POSTGRES_PASSWORD=odoo_db_password
      - PGDATA=/var/lib/postgresql/data/pgdata
    volumes:
      - postgres-data:/var/lib/postgresql/data/pgdata
    restart: unless-stopped

  nginx:
    image: nginx:alpine
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf
      - ./certbot/conf:/etc/letsencrypt
      - ./certbot/www:/var/www/certbot
    depends_on:
      - odoo
    restart: unless-stopped

volumes:
  odoo-data:
  postgres-data:

اوڈو کنفیگریشن فائل

config/odoo.conf پروڈکشن کے لیے موزوں ترتیبات کے ساتھ بنائیں:

[options]
addons_path = /mnt/extra-addons,/usr/lib/python3/dist-packages/odoo/addons
admin_passwd = your_strong_admin_password
db_host = db
db_port = 5432
db_user = odoo
db_password = odoo_db_password
db_name = production_db
dbfilter = ^production_db$
list_db = False
proxy_mode = True
workers = 4
max_cron_threads = 2
limit_memory_hard = 2684354560
limit_memory_soft = 2147483648
limit_time_cpu = 600
limit_time_real = 1200
log_level = warn

** کلیدی ترتیبات کی وضاحت کی گئی:**

  • proxy_mode = True: فارورڈ کردہ ہیڈرز کو صحیح طریقے سے ہینڈل کرنے کے لیے Nginx کے پیچھے بھاگتے وقت درکار ہوتا ہے۔
  • workers = 4: کارکنوں کے عمل کی تعداد (انگوٹھے کا اصول: 2 کارکن فی CPU کور)
  • max_cron_threads = 2: طے شدہ کارروائیوں کے لیے وقف کردہ دھاگے۔
  • list_db = False: لاگ ان پیج پر ڈیٹا بیس کی فہرست کو روکتا ہے (سیکیورٹی)
  • dbfilter: ایک ڈیٹا بیس تک رسائی کو محدود کرتا ہے۔

Nginx ریورس پراکسی کنفیگریشن

upstream odoo {
    server odoo:8069;
}
upstream odoochat {
    server odoo:8072;
}

server {
    listen 80;
    server_name your-domain.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name your-domain.com;

    ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;

    client_max_body_size 200m;
    proxy_read_timeout 720s;
    proxy_connect_timeout 720s;
    proxy_send_timeout 720s;

    location /websocket {
        proxy_pass http://odoochat;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

    location / {
        proxy_pass http://odoo;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
    }

    location ~* /web/static/ {
        proxy_cache_valid 200 90m;
        proxy_buffering on;
        expires 864000;
        proxy_pass http://odoo;
    }
}

بیک اپ کی حکمت عملی

خودکار ڈیٹا بیس بیک اپ

ایک بیک اپ اسکرپٹ بنائیں جو روزانہ کرون کے ذریعے چلتا ہے:

#!/bin/bash
BACKUP_DIR=/backups/odoo
DATE=$(date +%Y%m%d_%H%M%S)
docker exec odoo-db pg_dump -U odoo production_db | gzip > $BACKUP_DIR/odoo_$DATE.sql.gz
find $BACKUP_DIR -name "*.sql.gz" -mtime +30 -delete

فائل اسٹور بیک اپ

Odoo فائل اسٹور (اپ لوڈ کردہ دستاویزات، منسلکات) odoo-data والیوم میں رہتا ہے۔ ڈیٹا بیس کے ساتھ اس کا بیک اپ لیں:

docker run --rm -v odoo-data:/data -v /backups:/backup alpine \
  tar czf /backup/odoo-filestore_$DATE.tar.gz /data

سیکیورٹی کو سخت کرنا

  • odoo.conf میں پہلے سے طے شدہ admin_passwd کو ایک مضبوط بے ترتیب پاس ورڈ میں تبدیل کریں۔
  • ڈیٹا بیس کی گنتی کو روکنے کے لیے list_db = False سیٹ کریں۔
  • ڈیٹا بیس کی رسائی کو ایک ڈیٹا بیس تک محدود کرنے کے لیے dbfilter کا استعمال کریں۔
  • جہاں ممکن ہو کنٹینرز کو غیر جڑ صارفین کے طور پر چلائیں۔
  • حفاظتی پیچ کے ساتھ ڈوکر کی تصاویر کو اپ ڈیٹ رکھیں
  • ڈوکر راز یا ماحولیاتی متغیر فائلوں کا استعمال کریں (ان لائن پاس ورڈ نہیں)
  • Restrict container network access using Docker networks

اکثر پوچھے گئے سوالات

سوال: ایک واحد Odoo کنٹینر کتنے ساتھی صارفین کو سنبھال سکتا ہے؟

4 کارکنوں کے ساتھ، ایک Odoo کنٹینر تقریباً 20-30 ایک ساتھ صارفین کو آرام سے ہینڈل کرتا ہے۔ زیادہ ہم آہنگی کے لیے، کارکنوں میں اضافہ کریں (CPU/RAM کے ذریعے محدود) یا لوڈ بیلنسر کے پیچھے متعدد Odoo کنٹینرز لگائیں۔

س: میں ڈوکر میں اوڈو کو کیسے اپ ڈیٹ کروں؟

نئی تصویر کھینچیں، موجودہ کنٹینر کو روکیں، موجودہ حجم کے ساتھ نئی تصویر چلائیں۔ مستقل والیوم آپ کے ڈیٹا اور فائل اسٹور کو تصویری اپ ڈیٹس میں برقرار رکھتے ہیں۔

س: کیا مجھے اوڈو ڈوکر کی آفیشل امیج استعمال کرنی چاہیے یا اپنی خود کی تصویر بنانا چاہیے؟

سرکاری تصویر معیاری تعیناتیوں کے لیے کام کرتی ہے۔ جب آپ کو مخصوص Python پیکجز، کسٹم ماڈیولز کے لیے سسٹم پر انحصار، یا پہلے سے نصب کمیونٹی ماڈیولز کی ضرورت ہو تو اپنی مرضی کی تصویر بنائیں۔

س: میں ڈوکر میں اوڈو انٹرپرائز کو کیسے ہینڈل کروں؟

Odoo Enterprise عوامی Docker امیج کے طور پر دستیاب نہیں ہے۔ انٹرپرائز ایڈونس ڈائرکٹری کو حجم کے طور پر ماؤنٹ کریں اور اسے ایڈونس_پاتھ کنفیگریشن میں حوالہ دیں۔ آپ کو ایک درست Odoo انٹرپرائز سبسکرپشن درکار ہے۔


آگے کیا ہے۔

ڈوکر کی تعیناتی آپ کو قابل تولید، قابل توسیع، اور برقرار رکھنے کے قابل Odoo پیداواری ماحول فراہم کرتی ہے۔ اس کنفیگریشن کے ساتھ شروع کریں اور اپنے استعمال کے پیٹرن کی بنیاد پر ورکرز کی گنتی، میموری کی حدود، اور کیشنگ کو ایڈجسٹ کریں۔

Odoo کی تعیناتی میں مدد کے لیے ECOSIRE سے رابطہ کریں، یا منظم ہوسٹنگ کے لیے ہماری Odoo سپورٹ سروسز کو دریافت کریں۔


ECOSIRE کے ذریعہ شائع کیا گیا -- انٹرپرائز سوفٹ ویئر کے حل کے ساتھ کاروبار کو پیمانے میں مدد کرنا۔

E

تحریر

ECOSIRE Research and Development Team

ECOSIRE میں انٹرپرائز گریڈ ڈیجیٹل مصنوعات بنانا۔ Odoo انٹیگریشنز، ای کامرس آٹومیشن، اور AI سے چلنے والے کاروباری حل پر بصیرت شیئر کرنا۔

Chat on WhatsApp