Implantação do Docker Odoo: configuração de contêiner pronto para produção
O Docker se tornou o método de implantação padrão do Odoo em ambientes de produção, com mais de 10 milhões de pulls de imagens do Odoo Docker no Docker Hub. A implantação em contêineres fornece ambientes reproduzíveis, escalonamento fácil, backups simplificados e separação limpa entre instâncias do Odoo. Este guia cobre uma configuração completa do Docker Odoo pronta para produção.
Principais conclusões
- Docker Compose orquestra Odoo, PostgreSQL e Nginx como serviços conectados
- Volumes persistentes garantem que os dados sobrevivam a reinicializações e atualizações de contêineres
- O proxy reverso Nginx lida com terminação SSL, cache de arquivos estáticos e balanceamento de carga
- Backups automatizados protegem contra perda de dados com intervenção manual mínima
Visão geral da arquitetura
Uma implantação de produção do Odoo Docker consiste em três serviços principais:
- Servidor de aplicativos Odoo: o contêiner Odoo executando o servidor web e a lógica do aplicativo
- Banco de dados PostgreSQL: um contêiner de banco de dados dedicado que armazena todos os dados Odoo
- Proxy reverso Nginx: lida com SSL, fornece arquivos estáticos e faz proxy de solicitações para Odoo
Os serviços opcionais incluem Redis (para cache e armazenamento de sessão), um contêiner de backup (despejos automatizados de banco de dados) e monitoramento (Prometheus + Grafana).
Configuração do Docker Compose
A base da implantação é um arquivo docker-compose.yml que define todos os serviços:
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:
Arquivo de configuração Odoo
Crie config/odoo.conf com configurações otimizadas para produção:
[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
Configurações principais explicadas:
proxy_mode = True: Obrigatório ao executar atrás do Nginx para lidar corretamente com cabeçalhos encaminhadosworkers = 4: Número de processos de trabalho (regra prática: 2 trabalhadores por núcleo de CPU)max_cron_threads = 2: Threads dedicados para ações agendadaslist_db = False: Impede a listagem do banco de dados na página de login (segurança)dbfilter: Restringe o acesso a um único banco de dados
Configuração de proxy reverso 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;
}
}
Estratégia de backup
Backups automatizados de banco de dados
Crie um script de backup que seja executado diariamente via cron:
#!/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
Backup do armazenamento de arquivos
O armazenamento de arquivos Odoo (documentos carregados, anexos) reside no volume odoo-data. Faça backup junto com o banco de dados:
docker run --rm -v odoo-data:/data -v /backups:/backup alpine \
tar czf /backup/odoo-filestore_$DATE.tar.gz /data
Fortalecimento de segurança
- Altere o
admin_passwdpadrão em odoo.conf para uma senha aleatória forte - Defina
list_db = Falsepara evitar a enumeração do banco de dados - Use
dbfilterpara restringir o acesso ao banco de dados a um único banco de dados - Execute contêineres como usuários não-root sempre que possível
- Mantenha as imagens do Docker atualizadas com patches de segurança
- Use segredos do Docker ou arquivos de variáveis de ambiente (não senhas embutidas)
- Restringir o acesso à rede de contêineres usando redes Docker
Perguntas frequentes
P: Quantos usuários simultâneos um único contêiner Odoo pode manipular?
Com 4 trabalhadores, um contêiner Odoo lida confortavelmente com aproximadamente 20 a 30 usuários simultâneos. Para maior simultaneidade, aumente os trabalhadores (limitados por CPU/RAM) ou implante vários contêineres Odoo atrás de um balanceador de carga.
P: Como atualizo o Odoo no Docker?
Extraia a nova imagem, pare o contêiner atual, execute a nova imagem com os volumes existentes. Os volumes persistentes retêm seus dados e armazenamento de arquivos durante as atualizações de imagem.
P: Devo usar a imagem oficial do Odoo Docker ou criar a minha própria?
A imagem oficial funciona para implantações padrão. Crie uma imagem personalizada quando precisar de pacotes Python específicos, dependências de sistema para módulos personalizados ou módulos comunitários pré-instalados.
P: Como lidar com o Odoo Enterprise no Docker?
Odoo Enterprise não está disponível como imagem pública do Docker. Monte o diretório de complementos corporativos como um volume e faça referência a ele na configuração addons_path. Você precisa de uma assinatura válida do Odoo Enterprise.
O que vem a seguir
A implantação do Docker oferece um ambiente de produção Odoo reproduzível, escalonável e de fácil manutenção. Comece com esta configuração e ajuste as contagens de trabalhadores, os limites de memória e o cache com base nos seus padrões de uso.
Entre em contato com a ECOSIRE para obter assistência na implantação do Odoo ou explore nossos serviços de suporte Odoo para hospedagem gerenciada.
Publicado pela ECOSIRE – ajudando empresas a escalar com soluções de software empresarial.
Escrito por
ECOSIRE TeamTechnical Writing
The ECOSIRE technical writing team covers Odoo ERP, Shopify eCommerce, AI agents, Power BI analytics, GoHighLevel automation, and enterprise software best practices. Our guides help businesses make informed technology decisions.
ECOSIRE
Transforme seu negócio com o Odoo ERP
Implementação, personalização e suporte especializado do Odoo para agilizar suas operações.
Artigos Relacionados
Segmentação de clientes baseada em IA: do RFM ao clustering preditivo
Saiba como a IA transforma a segmentação de clientes, desde a análise estática de RFM até o clustering preditivo dinâmico. Guia de implementação com dados Python, Odoo e ROI real.
IA para otimização da cadeia de suprimentos: visibilidade, previsão e automação
Transforme as operações da cadeia de suprimentos com IA: detecção de demanda, pontuação de risco de fornecedores, otimização de rotas, automação de armazéns e previsão de interrupções. Guia 2026.
Estratégia de comércio eletrônico B2B: construir um negócio online de atacado em 2026
Domine o comércio eletrônico B2B com estratégias de preços de atacado, gerenciamento de contas, condições de crédito, catálogos punchout e configuração do portal Odoo B2B.