7 ms·
Ask HN: Where to deploy a Docker container easily?
What’s the simplest way to deploy a Docker container? By this I mean I have build my image and uploaded it to a registry. Now I want to deploy it somewhere with some basic conf, a few environment variables and maybe some reasonable auto scaling (not mandatory).
What’s the easiest way to do that? AWS? Digital Ocean? Heroku? Somewhere else?
- tonicbbleking 5y agoPretty easy with Render: https://render.com/ https://render.com/ They even build the image for you, so you don't need a registry.
- brunooliv 5y agoDigital Ocean works pretty smoothly
- kwawingu 5y agoIf you want to omit the registry stage, with KwaWingu.com you can deploy a GitHub repo directly to a container, with full control over the Dockerfile. The container lives behind an SSL-terminated ALB to which you can associate a domain name if you're running a public web service. Auto-scaling not yet supported but coming in the future.
- asimpson 5y agoFly.io is really good.
- yuppie_scum 5y agoAWS elastic beanstalk is good if you have some AWS skill, if not, Heroku is a great place to start.
- reducesuffering 5y agoBeanstalk seems to be on it's way out, advised against new deployments in favor of ECS / Fargate.
- thiht 5y agoHeroku doesn’t seem to allow deploying images from a registry, you need to let it build the image, which is not what I want. AWS is way too hard to setup and opaque regarding pricing. I gave ECS a try (see my other comment) but it’s a no for me.
- verdverm 5y agoEvery major vendor has a solution, as you can see from peer comments. I am partial to Google Cloud Run.
- gfd 5y agoAWS ECS is pretty easy to use
- smackeyacky 5y agoIt's not the most obvious thing to set up, but once it's set up it's basically set and forget. I prefer to use the AWS CLI, so you'll have to install that. Then it's a matter of setting up an aws-ecs-tools-defaults.json file so that the AWS CLI knows what to do with your container. Docker documentation: https://docs.docker.com/cloud/ecs-integration/ https://docs.docker.com/cloud/ecs-integration/ AWS documentation: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html https://docs.aws.amazon.com/AmazonECS/latest/developerguide/...
- thiht 5y agoHow is it easy? I'm trying to deploy my container and so far I needed to create: - a task definition - a cluster - a service and it hasn't even asked me for environment variables yet. The cluster definition asks me for network configurations, instance selection (I chose a t4g nano but the default was an expensive one, without any pricing on sight). It's NOT easy. I abandoned because I have no idea how much it’ll cost me. I’ll try some of the other suggestions.
- tedmiston 5y agoThis is classic AWS in terms of having many abstractions and small components. To be fair, all of the other PaaSes are doing something similar, they're just abstracting it away from the end user. There are abundant configuration options across ECR + ECS Fargate, but for a basic container with a few environment variables you can use the defaults for almost all of them. Also, after the initial setup, things like deploying a new version, adding / updating configuration, scaling up, etc are pretty easy to maintain.
- nreece 5y agoI highly recommend Google Cloud Run: https://cloud.google.com/run https://cloud.google.com/run
- reducesuffering 5y agoIsn't that like $40/mth to keep a container up? I think it's more geared towards ephemeral short-term container workloads.
- nreece 5y agoIts pricing is pay-per-use (request or event processing), so there's no monthly minimum. They also offer a decent free tier. An API we migrated handles millions of transactions, and costs less than $3/month to run, even cheaper than their Cloud Functions product.
- thiht 5y agoI finally settled on this but it wasn’t easy either. I had to create: - an artifact repository and a Docker repository, because cloud run refuses to run images from a different repository - a service account (in a completely different section) - add the correct role on the account, in yet another section - retrieve the password, the username and url of the Docker repo (I had to read blog articles to find these) - and then finally push my image. Configuring the container was easy after that, but I haven’t found yet how to configure continuous deployment from my CI pipeline. I guess I’ll have to use the gcp cli but it doesn’t seem obvious how to do it.
- nreece 5y agoIt's usually just one command: gcloud run deploy See 'Deploying to Cloud Run from source': https://cloud.google.com/run/docs/quickstarts/build-and-deploy/deploy-nodejs-service#deploy https://cloud.google.com/run/docs/quickstarts/build-and-depl... I also like deploying to Cloud Run right from Cloud Shell Editor (their web IDE, viz like VS Code in the browser): https://shell.cloud.google.com https://shell.cloud.google.com
- whalifiied 5y agoDocker Desktop is a starting point for you. https://www.docker.com/blog/getting-started-with-docker-desktop/ https://www.docker.com/blog/getting-started-with-docker-desk...
- aristofun 5y agoAny vps with docker image + docker swarm. As simple as it can get
- rtcoms 5y agoCheck Caprover
- jjice 5y agoAny PaaS provider likely supports Docker at this point. AWS Elastic Beanstalk, GCP App Engine (I think, not a GCP user myself), Heroku, and DO and Azure have some as well, I just don't know the name. I have experience with Heroku and AWS Elastic Beanstalk, and both were very simple setups. Install the CLI, run the commands in the docs to push your image to their service, done. I think this should meet your requirements.
- tedmiston 5y agoDokku is another option if you are looking for something open source that you can run on a VM on any cloud. https://github.com/dokku/dokku https://github.com/dokku/dokku
- toomuchtodo 5y agoAvailable in Digital Ocean’s marketplace: https://marketplace.digitalocean.com/apps/dokku https://marketplace.digitalocean.com/apps/dokku