无法远程访问 Prefect 服务器

Cant Access Prefect Server Remotely

我使用命令 prefect server start --postgres-port=5433 --server-port=5001 --hasura-port=5002 --graphql-port=5003 --expose 在我的 azure 网络中允许的端口启动 prefect 服务器。当我做 docker ps 我得到

CONTAINER ID   IMAGE                          COMMAND                  CREATED          STATUS                    PORTS                                   NAMES
873bfa5bd6bc   prefecthq/ui:core-0.15.7       "/docker-entrypoint.…"   23 minutes ago   Up 23 minutes (healthy)   80/tcp, 0.0.0.0:8080->8080/tcp          tmp_ui_1
9ca79a768265   prefecthq/apollo:core-0.15.7   "tini -g -- bash -c …"   23 minutes ago   Up 23 minutes (healthy)   0.0.0.0:5003->4200/tcp                  tmp_apollo_1
ab7c87ddbabb   prefecthq/server:core-0.15.7   "tini -g -- python s…"   23 minutes ago   Up 23 minutes                                                     tmp_towel_1
ef230baeddb5   prefecthq/server:core-0.15.7   "tini -g -- bash -c …"   23 minutes ago   Up 23 minutes (healthy)   127.0.0.1:5001->4201/tcp                tmp_graphql_1
410c38f08f83   hasura/graphql-engine:v1.3.3   "graphql-engine serve"   23 minutes ago   Up 23 minutes (healthy)   127.0.0.1:5002->3000/tcp                tmp_hasura_1
82748fbc9f4d   postgres:11                    "docker-entrypoint.s…"   23 minutes ago   Up 23 minutes (healthy)   127.0.0.1:5433->5432/tcp                tmp_postgres_1

我的~/.prefect/config.toml

[server]
  endpoint = "http://ipaddress:5003/graphql"

  [server.ui]
  apollo_url = "http://ipaddress:5003/graphql"

然后当我启动服务器时,状态如图所示并重定向到 ipaddress:8080/getting-started 页面

我使用 docker logs ab7c87ddbabb 检查了 tmp_towel_1 的日志,因为它没有显示正常状态,我发现了一些错误

[Errno 111] Connect call failed ('some_ipaddress_which_i_dont_know_about', 3000)"}

我想是 docker 网络 ip 之类的。没有线索。 谁能指出我可能哪里错了?

通过社区 Slack 发布了同样的问题,根据那里的讨论,我们认为解决方案是使用 --server-port 设置端口而不公开其他端口,因为这些端口仅在各个组件之间内部使用。所以下面的命令应该有效:

prefect server start --server-port=5003 --no-postgres-port --use-volume --expose

然后在 config.toml 中,使用:

[server]
endpoint = "http://YOUR_MACHINES_PUBLIC_IP:5003/graphql"

  [server.ui]
    apollo_url = "http://YOUR_MACHINES_PUBLIC_IP:5003/graphql"

在此分享给后代。