I have a manifest to setup a Docker container before I have a Dockerfile. I'm still trying to figure out my preferred method of deployment, so in the meantime I figured I should try different methods to make an informed judgment.
For running a VM locally with Vagrant. It can be a little irritable, but it's open source and free, so I'm not complaining. I would probably use VMWare, but I don't want to pay for it right now.
I'm using puppet to configure my servers. This makes it really simple to ensure that I have the same environment. There is a bit of a learning curve, but the repeatability definitely makes it worth the effort. I found puppet to be a little easier to pick up relative to chef, but I've used both. They're both great solutions.
I really like that there are a lot of modules available on the puppet forge that are being actively maintained.
I don't have a strong preference between using Apache and nginx, but I find that the config files for nginx to be much more manageable.
Gardenbed installs all of the tools that are necessary to deploy a Ruby on Rails application to a VPS.
Vagrant allows me to ensure that anyone I'm collaborating with will be able to test my web application in the same environment. I also use Vagrant to setup VMs that I can use to refine my Capistrano recipes.
I'm using PostgreSQL as the backend for my web applications. I like that I get the benefits of a SQL database while also being able to use features like HSTORE.
→ RevTilt
To keep track of who is visiting the repo, but Github recently started offering something similar with https://github.com/cyrusstoller/RevTilt/graphs/traffic.
→ RevTilt
Because I like having more control of my deployment, I am currently hosting this on DigitalOcean. I don't need to worry about arbitrary row limits and I can be sure that the app is always running.
→ RevTilt
For deploying to a VPS like DigitalOcean. This pairs nicely with https://github.com/cyrusstoller/gardenbed.