如何配置Prefect后端服务器以指向Postgres

问题描述

难以将Prefect配置为在本地运行。 通过pip3安装,取决于docker(已安装)和docker-compose,安装,测试。作品。
我已经有一个正在运行的Postgres服务器,我想配置为使用该服务器。但是似乎也有人在docker中使用过吗?任何帮助表示赞赏。

运行时:

prefect backend server 
prefect server start

无法在本地找到映像“ docker / compose:1.27.4”
1.27.4:从docker / compose中拉出(下载zh开始运行docker)

状态:为docker / compose下载的新映像:1.27.4
警告:未设置PREFECT_SERVER_DB_CMD变量。认为空字符串
警告:未设置DB_CONNECTION_URL变量。认为空字符串
警告:未设置POSTGRES_DB变量。认为空白
警告:未设置POSTGRES_PASSWORD变量。认为空字符串>
警告:未设置POSTGRES_USER变量。认为空字符串。

解决方法

如果您参考prefect server start的文档,则应该找到所需的所有信息:

prefect server start --help

... 
      --use-volume                Enable the use of a volume for the Postgres service
      --volume-path       TEXT    A path to use for the Postgres volume,defaults to
                                  '~/.prefect/pg_data'
,

我遇到的问题与在Python中打开子进程的方式有关(Popen(docker-compose up,env = env)) 运行此命令时会传递(当前)环境变量,但在子任务中某些方式不可用。

docker-compose up

我调整了server.py代码并即时创建了.env文件。测试并用docker-compose查找并使用它。

真正的问题在于bash / sh终端环境,这就是我需要仔细研究的地方。

,

Prefect 现在允许您直接执行此操作,而无需即时运行自定义脚本。

您只需要指定 --external-postgres 标志。

prefect server start --postgres-url postgres://<username>:<password>@hostname:<port>/<dbname>

或者您也可以将其添加到 .prefect/config.toml

[server.database]
connection_url = "postgres://<username>:<password>@hostname:<port>/<dbname> "