3

我正在使用管道工将 R api 部署到数字海洋。在这里很难提供一个可重现的示例,但我想要的是让 swagger 端点编译并可用。它在本地工作,但不能在数字海洋服务器上工作。

在本地我这样做:

library(plumber)
r <- plumb("api/plumber.R")
r$run(port=8000)

现在 swagger 文档可在以下位置获得:http://127.0.0.1:8000/__swagger__/

当我按如下方式部署到服务器时:

library(analogsea)
library(plumber)
my_droplet <- as.droplet("my_droplet")

do_deploy_api(
  droplet = my_droplet,
  path = "my_path",
  localPath = "my_local_path",
  port = 8000
)

do_forward(my_droplet, "my_path")

现在我去[my_remote_ip]/my_path/__swagger__/我得到一个404.

有人知道怎么做吗?非常感激。

4

1 回答 1

0

多亏了这里的对话,我找到了解决办法。之后do_deploy_api()do_forward()我然后这样做:

droplet_execute([my_droplet], {
  system("sed -i 's/pr$run(port=8000)/pr$run(port=8000, swagger = TRUE)/g' /etc/systemd/system/plumber-[my_api].service", intern = TRUE) 
  system("systemctl daemon-reload", intern = TRUE)
  system("service plumber-[my_api] restart", intern = TRUE)
})
于 2017-11-16T17:03:34.023 回答