Docker Odoo Dağıtımı: Üretime Hazır Container Kurulumu
Docker, Docker Hub'da 10 milyondan fazla Odoo Docker görüntüsü çekilmesiyle üretim ortamlarında Odoo için standart dağıtım yöntemi haline geldi. Konteynerli dağıtım, tekrarlanabilir ortamlar, kolay ölçeklendirme, basitleştirilmiş yedeklemeler ve Odoo örnekleri arasında temiz ayrım sağlar. Bu kılavuz, üretime hazır eksiksiz bir Docker Odoo kurulumunu kapsar.
Önemli Çıkarımlar
- Docker Compose, Odoo, PostgreSQL ve Nginx'i bağlantılı hizmetler olarak düzenler
- Kalıcı birimler, verilerin konteynerin yeniden başlatılmasından ve güncellenmesinden sonra hayatta kalmasını sağlar
- Nginx ters proxy, SSL sonlandırma, statik dosya önbelleğe alma ve yük dengeleme işlemlerini gerçekleştirir
- Otomatik yedeklemeler minimum manuel müdahaleyle veri kaybına karşı koruma sağlar
Mimariye Genel Bakış
Üretim Odoo Docker dağıtımı üç temel hizmetten oluşur:
- Odoo uygulama sunucusu: Web sunucusunu ve uygulama mantığını çalıştıran Odoo konteyneri
- PostgreSQL veritabanı: Tüm Odoo verilerini depolayan özel bir veritabanı taşıyıcısı
- Nginx ters proxy: SSL'yi yönetir, statik dosyalar sunar ve Odoo'ya proxy istekleri sunar
İsteğe bağlı hizmetler arasında Redis (önbelleğe alma ve oturum depolama için), bir yedekleme kapsayıcısı (otomatik veritabanı dökümleri) ve izleme (Prometheus + Grafana) bulunur.
Docker Oluşturma Yapılandırması
Dağıtımın temeli, tüm hizmetleri tanımlayan bir docker-compose.yml dosyasıdır:
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:
Odoo Yapılandırma Dosyası
Üretim için optimize edilmiş ayarlarla config/odoo.conf oluşturun:
[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
Açıklanan temel ayarlar:
proxy_mode = True: Nginx'in arkasında çalışırken iletilen başlıkları doğru şekilde işlemek için gereklidirworkers = 4: Çalışan süreçlerin sayısı (temel kural: CPU çekirdeği başına 2 çalışan)max_cron_threads = 2: Zamanlanmış eylemler için ayrılmış iş parçacıklarılist_db = False: Giriş sayfasında veritabanı listelenmesini engeller (güvenlik)dbfilter: Tek bir veritabanına erişimi kısıtlar
Nginx Ters Proxy Yapılandırması
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;
}
}
Yedekleme Stratejisi
Otomatik Veritabanı Yedeklemeleri
Cron aracılığıyla günlük olarak çalışan bir yedekleme komut dosyası oluşturun:
#!/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
Dosya Deposu Yedekleme
Odoo dosya deposu (yüklenen belgeler, ekler) odoo-data biriminde bulunur. Veritabanının yanında yedekleyin:
docker run --rm -v odoo-data:/data -v /backups:/backup alpine \
tar czf /backup/odoo-filestore_$DATE.tar.gz /data
Güvenliği Güçlendirme
- Odoo.conf dosyasındaki varsayılan
admin_passwddeğerini güçlü bir rastgele parolayla değiştirin - Veritabanı numaralandırmasını önlemek için
list_db = Falsedeğerini ayarlayın - Veritabanı erişimini tek bir veritabanına kısıtlamak için
dbfilterkullanın - Konteynerleri mümkün olduğunca root olmayan kullanıcılar olarak çalıştırın
- Docker görüntülerini güvenlik yamalarıyla güncel tutun
- Docker sırlarını veya ortam değişkeni dosyalarını kullanın (satır içi şifreleri değil)
- Docker ağlarını kullanarak konteyner ağ erişimini kısıtlayın
Sıkça Sorulan Sorular
S: Tek bir Odoo kapsayıcısı kaç eşzamanlı kullanıcıyı yönetebilir?
4 çalışana sahip bir Odoo konteyneri, yaklaşık 20-30 eşzamanlı kullanıcıyı rahatlıkla yönetir. Daha yüksek eşzamanlılık için çalışanları artırın (CPU/RAM ile sınırlıdır) veya bir yük dengeleyicinin arkasına birden fazla Odoo konteyneri dağıtın.
S: Odoo'yu Docker'da nasıl güncellerim?
Yeni görüntüyü çekin, mevcut kabı durdurun, yeni görüntüyü mevcut birimlerle çalıştırın. Kalıcı birimler, görüntü güncellemelerinde verilerinizi ve dosya deponuzu korur.
S: Resmi Odoo Docker görüntüsünü mü kullanmalıyım yoksa kendiminkini mi oluşturmalıyım?
Resmi görüntü standart dağıtımlar için çalışır. Belirli Python paketlerine, özel modüller için sistem bağımlılıklarına veya önceden yüklenmiş topluluk modüllerine ihtiyaç duyduğunuzda özel bir görüntü oluşturun.
S: Odoo Enterprise'ı Docker'da nasıl yönetirim?
Odoo Enterprise, herkese açık bir Docker görüntüsü olarak mevcut değildir. Kurumsal eklenti dizinini bir birim olarak bağlayın ve addons_path yapılandırmasında buna referans verin. Geçerli bir Odoo Enterprise aboneliğine ihtiyacınız var.
Sırada Ne Var
Docker deployment gives you a reproducible, scalable, and maintainable Odoo production environment. Bu yapılandırmayla başlayın ve kullanım düzenlerinize göre çalışan sayılarını, bellek sınırlarını ve önbelleğe almayı ayarlayın.
Odoo dağıtım yardımı için ECOSIRE ile iletişime geçin veya yönetilen barındırma için Odoo destek hizmetlerimizi inceleyin.
ECOSIRE tarafından yayınlandı - işletmelerin kurumsal yazılım çözümleriyle ölçeklenmesine yardımcı oluyor.
Yazan
ECOSIRE Research and Development Team
ECOSIRE'da kurumsal düzeyde dijital ürünler geliştiriyor. Odoo entegrasyonları, e-ticaret otomasyonu ve yapay zeka destekli iş çözümleri hakkında içgörüler paylaşıyor.
İlgili Makaleler
Odoo ile Allegro Pazaryeri Entegrasyonu: Polonya'nın Lider e-Ticaret Platformu
Polonya e-Ticaret için REST API kurulumu, Allegro Smart, teklif verme ve gönderimi kapsayan Allegro pazar yerini Odoo ERP ile entegre etmeye yönelik eksiksiz kılavuz.
Odoo ile Alacak Hesabı Otomasyonu: Faturadan Ödemeye
Fatura yakalamadan onay iş akışına ve ödeme yürütmeye kadar Odoo'da ödenecek hesapları otomatikleştirin. İşleme maliyetlerini azaltın ve geç ödeme cezalarını ortadan kaldırın.
2026'da İşletmeniz için Doğru CRM'yi Nasıl Seçersiniz?
Odoo CRM, Salesforce, HubSpot, GoHighLevel ve Zoho'yu özellikler, fiyatlandırma, ölçeklenebilirlik ve sektöre uygunluk açısından karşılaştıran, 2026'da doğru CRM platformunu seçmeye yönelik eksiksiz bir kılavuz.