我正在使用管道工来部署一个R api到数字海洋。在这里很难提供一个可重复使用的示例,但我想要的是让swagger端点能够编译并可用。它在本地工作,但不能在数字海洋服务器上工作。
在本地,我这样做:
library(plumber)
r <- plumb("api/plumber.R")
r$run(port=8000)现在可以在http://127.0.0.1:8000/__swagger__/上找到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。
有人知道怎么做吗?非常感谢。
发布于 2017-11-17 01:03:34
多亏了对话here,我找到了一个变通的方法。在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)
})https://stackoverflow.com/questions/47203758
复制相似问题