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

How to configure Prefect backend server to point to Postgres

在本地将 Prefect 配置为 运行 时遇到困难。 通过 pip3 安装,取决于 docker(已安装)和 docker-compose,已安装,已测试。作品。
我已经有一个 运行ning Postgres 服务器,我想配置使用那个。但似乎 docker 中也使用了一个?感谢任何帮助。

当运行宁:

prefect backend server 
prefect server start

nable to find image 'docker/compose:1.27.4' locally
1.27.4: Pulling from docker/compose (downloads en starts running docker)

Status: Downloaded newer image for docker/compose:1.27.4
WARNING: The PREFECT_SERVER_DB_CMD variable is not set. Defaulting to a blank string
WARNING: The DB_CONNECTION_URL variable is not set. Defaulting to a blank string
WARNING: The POSTGRES_DB variable is not set. Defaulting to a blank
WARNING: The POSTGRES_PASSWORD variable is not set. Defaulting to a blank string >
WARNING: The POSTGRES_USER variable is not set. Defaulting to a blank string.

如果您参考 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> "