rexyai / RestRserve

R web API framework for building high-performance microservices and app backends
https://restrserve.org
271 stars 32 forks source link

Docker and HAproxy example #16

Open dselivanov opened 6 years ago

dselivanov commented 6 years ago

http and tcp forwarding

dselivanov commented 6 years ago

docker available at https://hub.docker.com/r/dselivanov/restrserve/

vikram-rawat commented 3 years ago

Link points to a 404 error page. It doesn't exist i guess

dselivanov commented 3 years ago

@vikram-rawat please refer to the readme - https://restrserve.org/#docker as the source of truth.

d3an commented 3 years ago

I got a PoC working with this:

Dockerfile

FROM rocker/r-base:latest

RUN mkdir -p /app
COPY . /app

RUN Rscript /app/install_packages.R

CMD Rscript /app/server.R

app/install_packages.R

install.packages("RestRserve", repos = "https://cloud.r-project.org")
install.packages("readr")

app/server.R

library(RestRserve)

app = Application$new()

app$add_get(
  path = "/health", 
  FUN = function(.req, .res) {
    .res$set_body("OK")
  })

app$add_post(
  path = "/addone", 
  FUN = function(.req, .res) {
    result = list(x = .req$body$x + 1L)
    .res$set_content_type("application/json")
    .res$set_body(result)
  })

backend = BackendRserve$new()
backend$start(app, http_port = 8080)

Build Steps

$ docker pull rocker/r-base
$ docker build -t username/image_name .  # build time took like 10mins tho
$ docker run --rm -it -p 8080:8080 username/image_name

Testing

$ curl http://localhost:8080/health
OK
$ curl -X POST -H "Content-Type: application/json" -d '{"x":4}' http://localhost:8080/addone
{"x":5}
dselivanov commented 3 years ago

@d3an that looks like an ordinal example of RestRserve docker image, but not a RestRserve paired with HAproxy. As for standard RestRserve base docker images I suggest "official" one - https://hub.docker.com/repository/docker/rexyai/restrserve (and corresponding Dockerfile)

ncullen93 commented 7 months ago

Hi @dselivanov is there a reason you removed HAproxy from the base docker? Is it no longer recommended or was that to just make things simpler?

dselivanov commented 7 months ago

To make things simpler