如何将参数传递给在 Docker 容器中运行的程序?

问题描述

我是 Docker 的新手,我想使用 odoo Docker 映像。 我想更新模块,通常我会重新启动服务器并重新启动它

odoo -u module_name

但我找不到如何使用 Docker 容器执行此操作。 换句话说,我想使用特定参数在容器内启动应用程序。

我想做这样的事情

docker start odoo -u module_name

怎么做?

解决方法

您可以使用 docker-compose 并在 Odoo 服务中添加以下命令:

tty: true
command: -u target_modules_to_update

如果您没有 docker-compose 文件,请告诉我,我会提供帮助。

,

@tjwnuk 您可以在名为 docker-compose.yml 的文件中添加以下代码:

version: '2'
services:
  web:
    image: odoo:version_number_here
    depends_on:
      - db
    ports:
      - "target_port_here:8069"
    tty: true
    command: -u module_name -d database_name or any config paramter you need to add
    volumes:
      - odoo:/var/lib/odoo
      - ./config/odoo.config:/etc/odoo/odoo.conf
      - ./addons-enterprise:/mnt/enterprise-addons
      - ./custom_addons:/mnt/extra-addons
    restart: always
  db:
    image: postgres:version_number_here
    ports:
      - "1432:5432"
    environment:
      - POSTGRES_DB=db_name
      - POSTGRES_USER=db_user
      - POSTGRES_PASSWORD=db_password
    volumes:
      - "odoo-dbs:/var/lib/postgresql/data/pgdata"
    restart: always
volumes:
  odoo:
  odoo-dbs:

你应该有那些目录:

1- config 在这个目录里面你应该有文件名 odoo.config 你也可以在这里添加任何配置

2- addons-enterprise

3- custom_addons

最后,如果你不安装 docker-compose 你可以在下面运行这个命令:

apt 安装 docker-compose

我希望这个回答能帮助你和任何有同样情况的人。

,

或者切换到容器并启动另一个 Odoo 实例:

docker exec -ti <odoo_container> bash

odoo -c <path_to_config> -u my_module -d my_database --max-cron-threads=0 --stop-after-init --no-xmlrpc

或切换到数据库容器并将模块设置为状态 to upgrade

docker exec -ti <database_container> psql -U <odoo_db_user> <db_name>

UPDATE ir_module_module set state = 'to upgrade' where name = 'my_module';

使用数据库方式需要重启odoo。