【问题标题】:How can I connect Odoo not running on Docker to a Postgres container running on Docker?如何将不在 Docker 上运行的 Odoo 连接到在 Docker 上运行的 Postgres 容器?
【发布时间】:2019-08-29 02:41:04
【问题描述】:

我正在尝试将 Odoo 连接到在 Docker 中运行的 Postgres 数据库实例,但无法弄清楚如何连接它们。我这样创建了我的实例:

$ docker run -d -e POSTGRES_USER=odoo -e POSTGRES_PASSWORD=odoo -e POSTGRES_DB=postgres --name mydb postgres:10

只有 Postgres 在 Docker 中运行,而不是 Odoo。如何将在 Docker 内部运行的 Postgres 连接到外部 Odoo?

【问题讨论】:

    标签: postgresql docker containers odoo


    【解决方案1】:

    很快:
    您必须打开 docker 实例的端口
    -p 5432:5432

    例子:

    docker run -d -p 5432:5432 -e POSTGRES_USER=odoo -e POSTGRES_PASSWORD=odoo -e POSTGRES_DB=postgres --name mydb postgres:10
    

    说明

    因为当你使用 docker 运行容器时,默认情况下它不会暴露给宿主网络。因此,当您运行 Postgres 时,无法在容器外部访问它。为了使其易于访问,您可以:

    • 导出特定端口:docker run -d -p 5432:5432 ...
    • 使用主机网络:docker run --network=host ...

    奖励:

    如果您希望将来在容器中运行 odoo,您可能需要创建一个 docker 网络 docker network create odooNetwork 并将其用于您的 Postgres 和 Odoo 实例:
    docker run -d --network=odooNetwork ...

    documentation中有关 docker 网络的更多详细信息

    【讨论】:

    • 当我这样做时,它告诉我该端口已被 postgres 使用。 “启动用户态代理时出错:监听 tcp 0.0.0.0:5432:绑定:地址已在使用中。”
    • 这是因为你已经有一个 docker 实例在运行。使用docker ps 列出并使用docker stop/rm <id> 停止您之前的实例。我建议你以后给你的 docker 命名:docker run -d --name=postgres ....
    • 谢谢,这更有意义。那么现在实例正在运行,我应该如何配置 Odoo 以连接到该数据库实例?
    • 对于普通的Odoo documentation 也是如此,如果您在 linux 上工作,则使用 localhost,否则使用 docker vm IP。你应该做最少的研究;)
    猜你喜欢
    • 2019-08-15
    • 2021-11-14
    • 1970-01-01
    • 2019-07-26
    • 2020-03-01
    • 2018-06-16
    • 2019-11-01
    • 2019-03-28
    • 2021-07-12
    相关资源
    最近更新 更多