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

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

E

ECOSIRE Research and Development Team

ECOSIRE टीम

5 मार्च 20265 मिनट पढ़ें976 शब्द

डॉकर ओडू परिनियोजन: उत्पादन के लिए तैयार कंटेनर सेटअप

Docker has become the standard deployment method for Odoo in production environments, with over 10 million Odoo Docker image pulls on Docker Hub. Containerized deployment provides reproducible environments, easy scaling, simplified backups, and clean separation between Odoo instances. यह मार्गदर्शिका संपूर्ण उत्पादन-तैयार डॉकर ओडू सेटअप को कवर करती है।

मुख्य बातें

  • डॉकर कंपोज़ ओडू, पोस्टग्रेएसक्यूएल और नेग्नेक्स को कनेक्टेड सेवाओं के रूप में व्यवस्थित करता है
  • लगातार वॉल्यूम सुनिश्चित करता है कि डेटा कंटेनर पुनरारंभ और अपडेट से बचा रहे
  • Nginx रिवर्स प्रॉक्सी SSL समाप्ति, स्थिर फ़ाइल कैशिंग और लोड संतुलन को संभालता है
  • स्वचालित बैकअप न्यूनतम मैन्युअल हस्तक्षेप के साथ डेटा हानि से बचाते हैं

वास्तुकला अवलोकन

एक उत्पादन ओडू डॉकर परिनियोजन में तीन मुख्य सेवाएँ शामिल हैं:

  1. ओडू एप्लिकेशन सर्वर: वेब सर्वर और एप्लिकेशन लॉजिक चलाने वाला ओडू कंटेनर
  2. PostgreSQL डेटाबेस: एक समर्पित डेटाबेस कंटेनर जो सभी Odoo डेटा को संग्रहीत करता है
  3. Nginx रिवर्स प्रॉक्सी: SSL को संभालता है, स्थिर फ़ाइलें परोसता है, और Odoo के लिए प्रॉक्सी अनुरोध करता है

वैकल्पिक सेवाओं में रेडिस (कैशिंग और सत्र भंडारण के लिए), एक बैकअप कंटेनर (स्वचालित डेटाबेस डंप), और निगरानी (प्रोमेथियस + ग्राफाना) शामिल हैं।


डॉकर कम्पोज़ कॉन्फ़िगरेशन

परिनियोजन की नींव सभी सेवाओं को परिभाषित करने वाली एक 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 कर्मचारी)
  • 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 का उपयोग करें
  • जहां संभव हो कंटेनरों को गैर-रूट उपयोगकर्ताओं के रूप में चलाएं
  • डॉकर छवियों को सुरक्षा पैच के साथ अद्यतन रखें
  • डॉकर रहस्य या पर्यावरण चर फ़ाइलों का उपयोग करें (इनलाइन पासवर्ड नहीं)
  • डॉकर नेटवर्क का उपयोग करके कंटेनर नेटवर्क पहुंच को प्रतिबंधित करें

अक्सर पूछे जाने वाले प्रश्न

प्रश्न: एक ओडू कंटेनर कितने समवर्ती उपयोगकर्ताओं को संभाल सकता है?

4 श्रमिकों के साथ, एक ओडू कंटेनर लगभग 20-30 समवर्ती उपयोगकर्ताओं को आराम से संभालता है। उच्च संगामिति के लिए, श्रमिकों को बढ़ाएं (सीपीयू/रैम द्वारा सीमित) या लोड बैलेंसर के पीछे कई ओडू कंटेनर तैनात करें।

प्रश्न: मैं डॉकर में ओडू को कैसे अपडेट करूं?

नई छवि खींचें, वर्तमान कंटेनर को रोकें, मौजूदा वॉल्यूम के साथ नई छवि चलाएं। लगातार वॉल्यूम आपके डेटा और फ़ाइलस्टोर को छवि अपडेट में बनाए रखता है।

प्रश्न: क्या मुझे आधिकारिक ओडू डॉकर छवि का उपयोग करना चाहिए या अपनी स्वयं की छवि बनानी चाहिए?

आधिकारिक छवि मानक परिनियोजन के लिए काम करती है। जब आपको विशिष्ट पायथन पैकेज, कस्टम मॉड्यूल के लिए सिस्टम निर्भरता, या पूर्व-स्थापित सामुदायिक मॉड्यूल की आवश्यकता हो तो एक कस्टम छवि बनाएं।

प्रश्न: मैं डॉकर में ओडू एंटरप्राइज को कैसे संभालूं?

ओडू एंटरप्राइज सार्वजनिक डॉकर छवि के रूप में उपलब्ध नहीं है। एंटरप्राइज़ ऐडऑन निर्देशिका को वॉल्यूम के रूप में माउंट करें और इसे ऐडऑन_पथ कॉन्फ़िगरेशन में संदर्भित करें। आपको एक वैध Odoo Enterprise सदस्यता की आवश्यकता है।


आगे क्या है

डॉकर परिनियोजन आपको एक प्रतिलिपि प्रस्तुत करने योग्य, स्केलेबल और रखरखाव योग्य ओडू उत्पादन वातावरण प्रदान करता है। इस कॉन्फ़िगरेशन से प्रारंभ करें और अपने उपयोग पैटर्न के आधार पर श्रमिकों की संख्या, मेमोरी सीमा और कैशिंग को समायोजित करें।

Odoo परिनियोजन सहायता के लिए ECOSIRE से संपर्क करें, या प्रबंधित होस्टिंग के लिए हमारी Odoo समर्थन सेवाओं का पता लगाएं।


ECOSIRE द्वारा प्रकाशित - एंटरप्राइज़ सॉफ़्टवेयर समाधानों के साथ व्यवसायों को बड़े पैमाने पर मदद करना।

शेयर करें:
E

लेखक

ECOSIRE Research and Development Team

ECOSIRE में एंटरप्राइज़-ग्रेड डिजिटल उत्पाद बना रहे हैं। Odoo एकीकरण, ई-कॉमर्स ऑटोमेशन, और AI-संचालित व्यावसायिक समाधानों पर अंतर्दृष्टि साझा कर रहे हैं।

WhatsApp पर चैट करें