Docker - Odoo y PostgreSQL
Estructura de directorios
odoo/
18/ # Clonar repositorio git clone --depth 1 https://github.com/odoo/odoo.git
addons-extra/
data/
Dockerfile
odoo.conf
postgresql/
Fichero docker-compose.yml
services:
odoo-app:
build:
context: .
dockerfile: ./odoo/Dockerfile
image: odoo-app-1.0
container_name: odoo-app-1.0
restart: unless-stopped
env_file: .env
ports:
- 18069:8069
volumes:
- ./odoo:/var/odoo
depends_on:
- odoo-app-db
#command: sh -c "python /var/odoo/18/odoo-bin --config=/var/odoo/odoo.conf -i base"
#command: sh -c "python /var/odoo/18/odoo-bin --config=/var/odoo/odoo.conf -i module"
odoo-app-db:
container_name: odoo-app-db
image: postgres:17.2
restart: unless-stopped
environment:
- POSTGRES_USER=odoo
- POSTGRES_PASSWORD=pruebas
- POSTGRES_DB=pruebas
- POSTGRES_INITDB_ARGS="--auth-host=scram-sha-256"
ports:
- "15432:5432"
volumes:
- ./postgresql/data:/var/lib/postgresql/data
Fichero odoo/Dockerfile
# Imagen
FROM python:3.12
RUN groupadd -r odoo && useradd -r -g odoo odoo
WORKDIR /var/odoo
RUN apt-get update && \
apt-get install -y --no-install-recommends \
ca-certificates \
curl \
dirmngr \
fonts-noto-cjk \
gnupg \
libssl-dev \
python3-dev \
python3-pip \
libldap2-dev libpq-dev libsasl2-dev \
node-less \
npm
COPY ./odoo/18/requirements.txt /var/odoo-setup/18/requirements.txt
RUN python -m pip install -r /var/odoo-setup/18/requirements.txt
RUN chown -R odoo:odoo /var/odoo
RUN chmod -R 755 /var/odoo
EXPOSE 8069 8071 8072
USER odoo
CMD [ "python", "/var/odoo/18/odoo-bin", "--config=/var/odoo/odoo.conf" ]
Fichero odoo/odoo.conf
[options]
addons_path = /var/odoo/18/addons,/var/odoo/addons-extra
data_dir = /var/odoo/data
without_demo = True
; admin_passwd = admin
; csv_internal_sep = ,
list_db = False
; db_maxconn = 64
db_host = odoo-app-db
; db_port = 5432
db_name = pruebas
db_user = odoo
db_password = pruebas
; db_template = template1
; dbfilter = .*
; debug_mode = False
; email_from = False
; limit_memory_hard = 2684354560
; limit_memory_soft = 2147483648
; limit_request = 8192
; limit_time_cpu = 60
; limit_time_real = 120
; list_db = True
; log_db = False
; log_handler = [':INFO']
; log_level = info
; logfile = None
; longpolling_port = 8072
; max_cron_threads = 2
; osv_memory_age_limit = 1.0
; osv_memory_count_limit = False
; smtp_password = False
; smtp_port = 25
; smtp_server = localhost
; smtp_ssl = False
; smtp_user = False
; workers = 0
; xmlrpc = True
; xmlrpc_interface =
xmlrpc_port = 8069
; xmlrpcs = True
; xmlrpcs_interface =
; xmlrpcs_port = 8071