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