小编use*_*612的帖子

从另一个容器访问 Docker postgres 容器

我正在尝试制作一个便携式解决方案,让我的应用程序容器连接到 postgres 容器。“便携”的意思是我可以给用户两个docker run命令,一个用于每个容器,并且它们将始终协同工作。

我在本地 PC 上运行了一个 postgres docker 容器,我像这样运行它,

docker run -p 5432:5432 -v $(pwd)/datadir:/var/lib/postgresql/data -e POSTGRES_PASSWORD=qwerty -d postgres:11
Run Code Online (Sandbox Code Playgroud)

我可以使用地址从 python flask 应用程序访问它127.0.0.1:5432

我也将 python 应用程序放在 docker 容器中,但在连接到 postgres 容器时遇到了问题。

地址127.0.0.1:5432不起作用。

地址172.17.0.2:5432 确实有效(172.17.0.2 是运行 postgres 的 docker 容器的地址)。但是我认为这不可移植,因为我不能保证 postgres 容器 IP 是什么。

我知道该--add-host标志,但它也要求提供主机 ip,我想将其设为 localhost (127.0.0.1)。尽管多次点击,--add-host我还是无法让它工作,因此最终的 docker run 命令在运行它们的任何计算机上都可以相同。

我也试过这个:docker container port accessed from another container

我的情况是 postgres 和 myApp 将是在同一台计算机上运行的容器。我更喜欢非 Docker 组合解决方案。

postgresql docker

10
推荐指数
1
解决办法
2749
查看次数

烧瓶记录重复输出

我想将烧瓶日志格式更改为控制台,我试过了,

向 Flask 的 app.logger 提供额外信息

但它对我不起作用;它已经超过 3 年了,也许已经过时了?

我可以添加一个额外的控制台处理程序,它可以工作,但是我得到了重复的输出,一次来自烧瓶默认控制台处理程序,一次来自我添加的处理程序。

来源,

import sys
import logging
from flask import Flask


def setup_logging(level=logging.INFO):

    # FIXME: logs are coming out "twice", once with the format from flask, and again from
    #        the format from consoleHandler.  app.logger level and the console handler
    #        level seem to be linked
    app.logger.setLevel(level)

    # Here we define our formatter
    FORMAT = "%(relativeCreated)6d %(threadName)15s %(filename)25s:%(lineno)4s - %(name)30s:%(funcName)20s() %(levelname)-5.5s : %(message)s"
    formatter = logging.Formatter(FORMAT)

    consoleHandler = logging.StreamHandler(stream=sys.stdout)
    consoleHandler.setFormatter(formatter)
    consoleHandler.setLevel(level)

    app.logger.addHandler(consoleHandler) …
Run Code Online (Sandbox Code Playgroud)

flask python-3.x

4
推荐指数
1
解决办法
2499
查看次数

标签 统计

docker ×1

flask ×1

postgresql ×1

python-3.x ×1