golem icon indicating copy to clipboard operation
golem copied to clipboard

Add more deploy destinations

Open ColinFay opened this issue 5 years ago • 5 comments

We should add more destinations for {golem} deployment.

For example:

  • Dokku https://github.com/dokku/dokku
  • Google Cloud https://cloud.google.com/kubernetes-engine/docs/tutorials/hello-app
  • AWS https://aws.amazon.com/getting-started/tutorials/deploy-docker-containers/?nc1=h_ls
  • pm2 https://pm2.keymetrics.io/

ColinFay avatar Dec 03 '19 10:12 ColinFay

Cloud Run?

MarkEdmondson1234 avatar Jan 10 '20 10:01 MarkEdmondson1234

Personally, I would love to see AWS Elastic Beanstalk: All automatic scaling from a Docker container. Game changer for Shiny scalability. Ultimately failed to run Shiny Server on EB though 😕

https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/single-container-docker.html

berkorbay avatar May 05 '20 16:05 berkorbay

@berkorbay I'm not fully familiar with AWS, I successfully deploy to Amazon Elastic Container Service once, could you pitch me on how Beanstalk differs from ECS ?

ColinFay avatar May 07 '20 12:05 ColinFay

@ColinFay Very good question! I had a hard time to differentiate, so I searched for the answer. It turns out to be the no-brainer version of ECS. I had experience with EC2 + autoscaling but it was not a smooth experience tbh.

https://aws.amazon.com/ecs/faqs/

Q: How is Amazon ECS different from AWS Elastic Beanstalk?

AWS Elastic Beanstalk is an application management platform that helps customers easily deploy and scale web applications and services. It keeps the provisioning of building blocks (e.g., EC2, RDS, Elastic Load Balancing, Auto Scaling, CloudWatch), deployment of applications, and health monitoring abstracted from the user so they can just focus on writing code. You simply specify which container images are to be deployed, the CPU and memory requirements, the port mappings, and the container links.

Elastic Beanstalk will automatically handle all the details such as provisioning an Amazon ECS cluster, balancing load, auto-scaling, monitoring, and placing your containers across your cluster. Elastic Beanstalk is ideal if you want to leverage the benefits of containers but just want the simplicity of deploying applications from development to production by uploading a container image. You can work with Amazon ECS directly if you want more fine-grained control for custom application architectures.

berkorbay avatar May 07 '20 18:05 berkorbay

Ok, it turned out that I made things a bit complicated (thanks to some tutorials on the wild internet). Below is a very basic Dockerfile that will get people started with EB. Perhaps Golem can facilitate Github+S3+Docker with Dockerrun files flow in the future. If I crack that, I will definitely send a pull request.

FROM rocker/shiny:3.6.3

USER shiny
EXPOSE 3838
CMD ["/usr/bin/shiny-server.sh"]

berkorbay avatar May 10 '20 07:05 berkorbay