Dockerizing Meteor, how?

I’m trying to run Meteor in Docker; I’m thinking I want to run it in Docker both locally, and when deploying to DigitalOcean. I’ve found that Phusion Passenger is supposedly a recommended platform for basing your Meteor deployments on, and that they have a Docker image to boot. However, I’m feeling pretty lost regarding where to go from here.

Could someone please provide me with some guidance on how to deploy my Meteor app in combination with Docker (and Phusion Passenger, presumably)?

Use MeteorD: https://registry.hub.docker.com/u/meteorhacks/meteord/

Passenger’s Docker image is bit confusing. They put a lot of stuff in it.
That’s not what we expect to do with Docker.

Thanks @arunoda . What about the benefits Passenger is supposed to provide though? Can I safely ignore these, or achieve the same on my own?

Apart from just the Docker image (meteord), what should the rest of my process look like? Should I follow @jkatzen’s recipe for OpsWorks? Can I use DigitalOcean instead, which is what I had in mind originally?

You can use @jkatzen recipe for OpsWork. You can use DigitalOcean too. But for that, you need to manage it manually.

I would ask you to look at Docker Compose and Docker Machine. They’ll help too.

We’ll have Docker support for mup soon. I’m saying this for months :D. May be that’s my gift for 1000 stars on GitHub: https://github.com/arunoda/meteor-up

1 Like

we are putting you over the limit today :smile:

1 Like

I just gave meteor-up the 1000th star. :smile:

3 Likes

Ha ha :slight_smile:
Nice. Nice.

Thanks @arunoda, I wasn’t aware of Docker Compose and Machine (I knew of Fig though, the precursor to Compose).

Let me outline the goals I have in mind.

I want to set up a production and a staging instance of my application. The idea is to use the staging one for testing, typically automated. Ideally I want to use DigitalOcean, although I could use OpsWorks if there are compelling reasons to do so. I’m thinking I want to be able to switch out my staging instance for the production one, in order to deploy a new version to production. I don’t have any previous experience with such a setup though.

Let’s say I use the meteord image as a starting point, which other steps do I have to through in order to implement the setup outlined above? Please suggest alternative approaches if you know of better ways of doing things.

I’m pretty certain at least that I will need a separate MongoDB container in order to persist the production data between deployments, but that’s about all I know.