odoo / docker

Other
931 stars 1.51k forks source link

Run container as user. #421

Open TafkaMax opened 1 year ago

TafkaMax commented 1 year ago

Hi

When trying to run the container as a specify user it wont work.

KeyError: 'getpwuid(): uid not found: 1000'
Traceback (most recent call last):
  File "/usr/bin/odoo", line 8, in <module>
    odoo.cli.main()
  File "/usr/lib/python3/dist-packages/odoo/cli/command.py", line 61, in main
    o.run(args)
  File "/usr/lib/python3/dist-packages/odoo/cli/server.py", line 179, in run
    main(args)
  File "/usr/lib/python3/dist-packages/odoo/cli/server.py", line 126, in main
    check_root_user()
  File "/usr/lib/python3/dist-packages/odoo/cli/server.py", line 40, in check_root_user
    if getpass.getuser() == 'root':
  File "/usr/lib/python3.9/getpass.py", line 169, in getuser
    return pwd.getpwuid(os.getuid())[0]
KeyError: 'getpwuid(): uid not found: 1000'

docker-compose.yml file

  odoo:
    container_name: odoo
    hostname: odoo
    image: odoo:15
    restart: unless-stopped
    volumes:
        - /opt/odoo/odoo/data/web-data:/var/lib/odoo
        - /opt/odoo/odoo/data/addons:/mnt/extra-addons
    ports:
        - "127.0.0.1:8069:8069"
    user: "1000:1000"
    env_file:
      - '/opt/odoo/odoo/env-odoo-config'
    networks:
      - odoo-network
    depends_on:
        - db

When removing the user.

2022-09-15 07:42:41,457 1 INFO ? odoo: Odoo version 15.0-20220902 
2022-09-15 07:42:41,458 1 INFO ? odoo: Using configuration file at /etc/odoo/odoo.conf 
2022-09-15 07:42:41,458 1 INFO ? odoo: addons paths: ['/usr/lib/python3/dist-packages/odoo/addons', '/mnt/extra-addons'] 
2022-09-15 07:42:41,458 1 INFO ? odoo: database: odoo@db:5432 
2022-09-15 07:42:41,669 1 INFO ? odoo.addons.base.models.ir_actions_report: Will use the Wkhtmltopdf binary at /usr/local/bin/wkhtmltopdf 
2022-09-15 07:42:41,986 1 INFO ? odoo.service.server: HTTP service (werkzeug) running on odoo:8069 
2022-09-15 07:43:18,053 1 INFO ? werkzeug: 172.21.0.1 - - [15/Sep/2022 07:43:18] "GET / HTTP/1.0" 500 - - - -
2022-09-15 07:43:18,057 1 ERROR ? werkzeug: Error on request:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/werkzeug/serving.py", line 323, in run_wsgi
    execute(self.server.app)
  File "/usr/lib/python3/dist-packages/werkzeug/serving.py", line 312, in execute
    application_iter = app(environ, start_response)
  File "/usr/lib/python3/dist-packages/odoo/service/server.py", line 482, in app
    return self.app(e, s)
  File "/usr/lib/python3/dist-packages/odoo/service/wsgi_server.py", line 112, in application
    return application_unproxied(environ, start_response)
  File "/usr/lib/python3/dist-packages/odoo/service/wsgi_server.py", line 87, in application_unproxied
    result = odoo.http.root(environ, start_response)
  File "/usr/lib/python3/dist-packages/odoo/http.py", line 1335, in __call__
    self.load_addons()
  File "/usr/lib/python3/dist-packages/odoo/http.py", line 1345, in load_addons
    for module in sorted(os.listdir(str(addons_path))):
PermissionError: [Errno 13] Permission denied: '/mnt/extra-addons' - - -
2022-09-15 07:43:18,119 1 INFO ? werkzeug: 172.21.0.1 - - [15/Sep/2022 07:43:18] "GET /favicon.ico HTTP/1.0" 500 - 0 0.000 0.002
2022-09-15 07:43:18,126 1 ERROR ? werkzeug: Error on request:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/werkzeug/serving.py", line 323, in run_wsgi
    execute(self.server.app)
  File "/usr/lib/python3/dist-packages/werkzeug/serving.py", line 312, in execute
    application_iter = app(environ, start_response)
  File "/usr/lib/python3/dist-packages/odoo/service/server.py", line 482, in app
    return self.app(e, s)
  File "/usr/lib/python3/dist-packages/odoo/service/wsgi_server.py", line 112, in application
    return application_unproxied(environ, start_response)
  File "/usr/lib/python3/dist-packages/odoo/service/wsgi_server.py", line 87, in application_unproxied
    result = odoo.http.root(environ, start_response)
  File "/usr/lib/python3/dist-packages/odoo/http.py", line 1336, in __call__
    return self.dispatch(environ, start_response)
  File "/usr/lib/python3/dist-packages/odoo/http.py", line 1487, in dispatch
    explicit_session = self.setup_session(httprequest)
  File "/usr/lib/python3/dist-packages/odoo/http.py", line 1367, in setup_session
    session_gc(self.session_store)
  File "/usr/lib/python3/dist-packages/odoo/tools/func.py", line 26, in __get__
    value = self.fget(obj)
  File "/usr/lib/python3/dist-packages/odoo/http.py", line 1313, in session_store
    path = odoo.tools.config.session_dir
  File "/usr/lib/python3/dist-packages/odoo/tools/config.py", line 710, in session_dir
    os.makedirs(d, 0o700)
  File "/usr/lib/python3.9/os.py", line 225, in makedirs
    mkdir(name, mode)
PermissionError: [Errno 13] Permission denied: '/var/lib/odoo/sessions' - - -
TafkaMax commented 1 year ago

Tried to make a custom build, but I would like something that takes into account the user you add.

Why cant you run it as an non-system user???

Eg.

When I checked the built container apt installs odoo and gives it a system UID and GID.

anyway

Some testing that didnt work out too good, but the start is good to accept user option of docker.

#Dockerfile
RUN groupadd -g 1000 odoo && useradd -g 1000 -u 1000 -m -d /var/lib/odoo odoo
2022-09-15 09:04:28,657 1 INFO ? odoo: Odoo version 15.0-20220902 
2022-09-15 09:04:28,658 1 INFO ? odoo: Using configuration file at /etc/odoo/odoo.conf 
2022-09-15 09:04:28,658 1 INFO ? odoo: addons paths: ['/usr/lib/python3/dist-packages/odoo/addons', '/var/lib/odoo/addons/15.0', '/mnt/extra-addons'] 
2022-09-15 09:04:28,658 1 INFO ? odoo: database: odoo@db:5432 
2022-09-15 09:04:28,871 1 INFO ? odoo.addons.base.models.ir_actions_report: Will use the Wkhtmltopdf binary at /usr/local/bin/wkhtmltopdf 
2022-09-15 09:04:29,187 1 INFO ? odoo.service.server: HTTP service (werkzeug) running on odoo:8069 
2022-09-15 09:05:13,739 1 INFO ? odoo.http: HTTP Configuring static files 
2022-09-15 09:05:13,804 1 ERROR odoo odoo.modules.loading: Database odoo not initialized, you can force it with `-i base` 
2022-09-15 09:05:13,805 1 INFO odoo odoo.modules.registry: Registry loaded in 0.032s 
2022-09-15 09:05:13,809 1 INFO odoo werkzeug: 172.28.0.1 - - [15/Sep/2022 09:05:13] "GET / HTTP/1.0" 500 - 8 0.018 0.046
2022-09-15 09:05:13,814 1 ERROR odoo werkzeug: Error on request:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/werkzeug/serving.py", line 323, in run_wsgi
    execute(self.server.app)
  File "/usr/lib/python3/dist-packages/werkzeug/serving.py", line 312, in execute
    application_iter = app(environ, start_response)
  File "/usr/lib/python3/dist-packages/odoo/service/server.py", line 482, in app
    return self.app(e, s)
  File "/usr/lib/python3/dist-packages/odoo/service/wsgi_server.py", line 112, in application
    return application_unproxied(environ, start_response)
  File "/usr/lib/python3/dist-packages/odoo/service/wsgi_server.py", line 87, in application_unproxied
    result = odoo.http.root(environ, start_response)
  File "/usr/lib/python3/dist-packages/odoo/http.py", line 1336, in __call__
    return self.dispatch(environ, start_response)
  File "/usr/lib/python3/dist-packages/odoo/http.py", line 1302, in __call__
    return self.app(environ, start_wrapped)
  File "/usr/lib/python3/dist-packages/werkzeug/middleware/shared_data.py", line 260, in __call__
    return self.app(environ, start_response)
  File "/usr/lib/python3/dist-packages/odoo/http.py", line 1515, in dispatch
    ir_http = request.registry['ir.http']
  File "/usr/lib/python3/dist-packages/odoo/modules/registry.py", line 182, in __getitem__
    return self.models[model_name]
KeyError: 'ir.http' - - -

But the database exists.

TafkaMax commented 1 year ago

2022-09-15 09:21:44,191 1 INFO ? odoo: Odoo version 15.0-20220902 
2022-09-15 09:21:44,191 1 INFO ? odoo: Using configuration file at /etc/odoo/odoo.conf 
2022-09-15 09:21:44,191 1 INFO ? odoo: addons paths: ['/usr/lib/python3/dist-packages/odoo/addons', '/var/lib/odoo/addons/15.0', '/mnt/extra-addons'] 
2022-09-15 09:21:44,191 1 INFO ? odoo: database: odoo@db:5432 
2022-09-15 09:21:44,405 1 INFO ? odoo.addons.base.models.ir_actions_report: Will use the Wkhtmltopdf binary at /usr/local/bin/wkhtmltopdf 
2022-09-15 09:21:44,718 1 INFO ? odoo.service.server: HTTP service (werkzeug) running on odoo:8069 
2022-09-15 09:22:16,306 1 INFO ? odoo.http: HTTP Configuring static files 
2022-09-15 09:22:16,370 1 ERROR odoo odoo.modules.loading: Database odoo not initialized, you can force it with `-i base` 
2022-09-15 09:22:16,370 1 INFO odoo odoo.modules.registry: Registry loaded in 0.032s 
2022-09-15 09:22:16,374 1 INFO odoo werkzeug: 172.31.0.1 - - [15/Sep/2022 09:22:16] "GET / HTTP/1.0" 500 - 8 0.017 0.046
2022-09-15 09:22:16,379 1 ERROR odoo werkzeug: Error on request:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/werkzeug/serving.py", line 323, in run_wsgi
    execute(self.server.app)
  File "/usr/lib/python3/dist-packages/werkzeug/serving.py", line 312, in execute
    application_iter = app(environ, start_response)
  File "/usr/lib/python3/dist-packages/odoo/service/server.py", line 482, in app
    return self.app(e, s)
  File "/usr/lib/python3/dist-packages/odoo/service/wsgi_server.py", line 112, in application
    return application_unproxied(environ, start_response)
  File "/usr/lib/python3/dist-packages/odoo/service/wsgi_server.py", line 87, in application_unproxied
    result = odoo.http.root(environ, start_response)
  File "/usr/lib/python3/dist-packages/odoo/http.py", line 1336, in __call__
    return self.dispatch(environ, start_response)
  File "/usr/lib/python3/dist-packages/odoo/http.py", line 1302, in __call__
    return self.app(environ, start_wrapped)
  File "/usr/lib/python3/dist-packages/werkzeug/middleware/shared_data.py", line 260, in __call__
    return self.app(environ, start_response)
  File "/usr/lib/python3/dist-packages/odoo/http.py", line 1515, in dispatch
    ir_http = request.registry['ir.http']
  File "/usr/lib/python3/dist-packages/odoo/modules/registry.py", line 182, in __getitem__
    return self.models[model_name]
KeyError: 'ir.http' - - -
2022-09-15 09:22:16,467 1 INFO odoo werkzeug: 172.31.0.1 - - [15/Sep/2022 09:22:16] "GET /favicon.ico HTTP/1.0" 500 - 2 0.005 0.023
2022-09-15 09:22:16,473 1 ERROR odoo werkzeug: Error on request:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/werkzeug/serving.py", line 323, in run_wsgi
    execute(self.server.app)
  File "/usr/lib/python3/dist-packages/werkzeug/serving.py", line 312, in execute
    application_iter = app(environ, start_response)
  File "/usr/lib/python3/dist-packages/odoo/service/server.py", line 482, in app
    return self.app(e, s)
  File "/usr/lib/python3/dist-packages/odoo/service/wsgi_server.py", line 112, in application
    return application_unproxied(environ, start_response)
  File "/usr/lib/python3/dist-packages/odoo/service/wsgi_server.py", line 87, in application_unproxied
    result = odoo.http.root(environ, start_response)
  File "/usr/lib/python3/dist-packages/odoo/http.py", line 1336, in __call__
    return self.dispatch(environ, start_response)
  File "/usr/lib/python3/dist-packages/odoo/http.py", line 1302, in __call__
    return self.app(environ, start_wrapped)
  File "/usr/lib/python3/dist-packages/werkzeug/middleware/shared_data.py", line 260, in __call__
    return self.app(environ, start_response)
  File "/usr/lib/python3/dist-packages/odoo/http.py", line 1515, in dispatch
    ir_http = request.registry['ir.http']
  File "/usr/lib/python3/dist-packages/odoo/modules/registry.py", line 182, in __getitem__
    return self.models[model_name]
KeyError: 'ir.http' - - -
2022-09-15 09:22:44,806 1 ERROR odoo odoo.sql_db: bad query: 
            SELECT latest_version
            FROM ir_module_module
             WHERE name='base'

ERROR: relation "ir_module_module" does not exist
LINE 3:             FROM ir_module_module
                         ^

2022-09-15 09:22:44,807 1 WARNING odoo odoo.addons.base.models.ir_cron: Tried to poll an undefined table on database odoo. 
2022-09-15 09:22:45,834 1 ERROR odoo odoo.sql_db: bad query: 
            SELECT latest_version
            FROM ir_module_module
             WHERE name='base'

ERROR: relation "ir_module_module" does not exist
LINE 3:             FROM ir_module_module
                         ^

2022-09-15 09:22:45,835 1 WARNING odoo odoo.addons.base.models.ir_cron: Tried to poll an undefined table on database odoo. 
TafkaMax commented 1 year ago

I have created the database and stuff, but what is wrong?

TafkaMax commented 1 year ago

I have made it as "simple" as possible, but its still not working.


  odoo:
    container_name: odoo
    hostname: odoo 
    image: odoo:15
    restart: unless-stopped
    ports:
        - "127.0.0.1:8069:8069"
    env_file:
      - '/opt/odoo/odoo/env-odoo-config'
    networks:
      - odoo-network
    depends_on:
        - db
2022-09-15 09:52:59,736 1 INFO ? odoo: Odoo version 15.0-20220902 
2022-09-15 09:52:59,736 1 INFO ? odoo: Using configuration file at /etc/odoo/odoo.conf 
2022-09-15 09:52:59,737 1 INFO ? odoo: addons paths: ['/usr/lib/python3/dist-packages/odoo/addons', '/var/lib/odoo/addons/15.0', '/mnt/extra-addons'] 
2022-09-15 09:52:59,737 1 INFO ? odoo: database: odoo@db:5432 
2022-09-15 09:53:00,536 1 INFO ? odoo.addons.base.models.ir_actions_report: Will use the Wkhtmltopdf binary at /usr/local/bin/wkhtmltopdf 
2022-09-15 09:53:01,995 1 INFO ? odoo.service.server: HTTP service (werkzeug) running on odoo:8069 
2022-09-15 09:53:15,222 1 INFO ? odoo.http: HTTP Configuring static files 
2022-09-15 09:53:15,553 1 ERROR odoo odoo.modules.loading: Database odoo not initialized, you can force it with `-i base` 
2022-09-15 09:53:15,555 1 INFO odoo odoo.modules.registry: Registry loaded in 0.208s 
2022-09-15 09:53:15,559 1 INFO odoo werkzeug: 192.168.80.1 - - [15/Sep/2022 09:53:15] "GET / HTTP/1.0" 500 - 8 0.277 0.054
2022-09-15 09:53:15,564 1 ERROR odoo werkzeug: Error on request:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/werkzeug/serving.py", line 323, in run_wsgi
    execute(self.server.app)
  File "/usr/lib/python3/dist-packages/werkzeug/serving.py", line 312, in execute
    application_iter = app(environ, start_response)
  File "/usr/lib/python3/dist-packages/odoo/service/server.py", line 482, in app
    return self.app(e, s)
  File "/usr/lib/python3/dist-packages/odoo/service/wsgi_server.py", line 112, in application
    return application_unproxied(environ, start_response)
  File "/usr/lib/python3/dist-packages/odoo/service/wsgi_server.py", line 87, in application_unproxied
    result = odoo.http.root(environ, start_response)
  File "/usr/lib/python3/dist-packages/odoo/http.py", line 1336, in __call__
    return self.dispatch(environ, start_response)
  File "/usr/lib/python3/dist-packages/odoo/http.py", line 1302, in __call__
    return self.app(environ, start_wrapped)
  File "/usr/lib/python3/dist-packages/werkzeug/middleware/shared_data.py", line 260, in __call__
    return self.app(environ, start_response)
  File "/usr/lib/python3/dist-packages/odoo/http.py", line 1515, in dispatch
    ir_http = request.registry['ir.http']
  File "/usr/lib/python3/dist-packages/odoo/modules/registry.py", line 182, in __getitem__
    return self.models[model_name]
KeyError: 'ir.http' - - -
2022-09-15 09:54:02,052 1 ERROR odoo odoo.sql_db: bad query: 
            SELECT latest_version
            FROM ir_module_module
             WHERE name='base'

ERROR: relation "ir_module_module" does not exist
LINE 3:             FROM ir_module_module
                         ^

2022-09-15 09:54:02,052 1 WARNING odoo odoo.addons.base.models.ir_cron: Tried to poll an undefined table on database odoo. 
2022-09-15 09:54:03,079 1 ERROR odoo odoo.sql_db: bad query: 
            SELECT latest_version
            FROM ir_module_module
             WHERE name='base'

ERROR: relation "ir_module_module" does not exist
LINE 3:             FROM ir_module_module
                         ^
TafkaMax commented 1 year ago

the ENV file contains only the PASSWORD variable. As others are default for me

lathama commented 3 months ago

Hello, I am looking into some old issues. It looks like you have a lot going on here. For testing you can set the entrypoint of your container to something like /bin/bash and confirm the permissions before you start odoo.