问题描述
难以将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> "