2017-11-09 10 views
1

배관공을 사용하여 Ripi를 디지털 바다에 배치하고 있습니다. 여기서 재현 할 수있는 예제를 제공하기는 어렵지만 필자가 원하는 것은 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__/로 이동

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

이제 자신감 워드 프로세서에서 사용할 수있는 나는 404을 얻는다.

누구든지이 작업을 수행하는 방법을 알고 있습니까? 많은 감사하겠습니다.

+1

좋은 점. 대화식으로 실행하는 경우'run()'호출은 기본적으로 Swagger 만 표시하므로 IDE에서 작동하지만 프로덕션 서버에서는 작동하지 않습니다. do_deploy_api 옵션에 이것을 추가해야합니다. https://github.com/trestletech/plumber/issues에서 티켓을 열 수 있습니까? –

+1

참고하시기 바랍니다. 여러분이 곤란한 상황이라면'/ etc/systemd/system ___. service' 파일을 편집하여'run()'호출을 변경하여'swagger = TRUE' 매개 변수를 포함시킬 수 있습니다. 하지만 do_deploy_api()를 호출 할 때마다이 문제가 발생하고 다시 시도해야합니다. –

+0

Brilliant, thanks 제프! 내가 제안한대로 표를 열었다. – roman

답변

0

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) 
})