I have found myself starting to use Docker for any of the side projects I work on. My side projects are not really complex but I have seen some benefits when moving my application from development to production. How do you use Docker for side projects ?
I've just tried render.com in the last few days for this. If the pricing works for what you're doing, it's quite a nice setup for side-projects.
It builds from a Dockerfile in the repository you link when you push to a branch and has pull request branch environments, which is quite nice.
I use docker for both (client and api) applications. The client is written in React and API is in Node.js with GraphQL!
When I make any changes into my desired branch and push to the github repo a github action runs, that build, tag and publish to github registry! Then it login to my digital ocean bucket to pull the image and update the live project. If anything goes wrong, github actions CI/CD will not continue to the next step.
For tiny projects just starting out I use docker-compose for the whole thing both in development and prod.
I create a "app.env" file to populate variables that differ between dev and prod, with "env_file" config option. In prod that "app.env" is usually created at application launch time via a shell wrapper that pulls secrets out of AWS secrets manager and then starts the app. For dev use I don't care, but usually don't check it in either.
As for updating, make sure unattended-upgrades or the equivalent is running on your system, don't pin your docker images too tightly (alpine:3 vs. alpine:3.11), and recycle your hosts every once in a while. I use packer and Terraform for that last bit and when I change some config files a new AMI gets built and begins an automatic cutover. (It goes without saying your storage needs to be a non-root EBS volume here ;)
YMMV but feel free to reach out if you need some pointers!!
Well, both of my products are Docker products.
Dogger (https://dogger.io) - A Docker Compose host in the cloud that is free for demo servers, and cheap elsewise (great for getting something in production quickly).
Pull Dog (https://github.com/apps/pull-dog) - A GitHub app that automatically creates testing environments for pull requests, based on a given Docker Compose file.
I use docker pretty heavily in development, but I try to avoid it in production. In most cases, adding docker to production just doubles (or triples, in some cases) the maintenance overhead required to keep prod secure. Ideally, the only thing I want to be responsible for updating is my application's dependencies. If. I'm using docker in production, I've now become responsible for ensuring. I keep that base image up to date as well as any system packages I install in that image. In the worst case, I may be running docker directly on EC2 instead of using something like, ECS, Heroku, Google Cloud Functions, etc, so now, I've also accepted the burden of keeping those hosts up to date as well.
I use it both for development (redis, postgresql, consul, vault etc), as well as for my deliverables (as docker images), which are deployed on a kubernetes cluster.
I use it a lot. Have docker on my laptop with Portainer that gives me nice UI for containers. Running DBs and other stuff needed for dev and testing. Can also test containers locally but I just push dev builds to k8s cluster and when it's good the stage version and then it goes to production.
I only use Docker for my PHP projects because that seemed to be the easiest way to create a local dev environment that is (almost) identical to the one I use in production.
For static sites and node projects, I'm not using it.
I use docker for the back-end of my side projects, for spinning up DBs and similar (Redis, Kafka, ...), plus tools (like adminer). For development, I keep the actual app I'm developing outside of docker.
Then I build a docker image for it too, for deploying.
Also it forces me to make my apps configurable enough since the config params for local and for in-docker are often slightly different (and then different again for deploying)