Add the following to a Dockerfile
in the root of your app:
FROM jshimko/meteor-launchpad:latest
Then you can build the image with:
docker build -t yourname/app .
Now you can run your container with...
docker run -d \
-e ROOT_URL=http://example.com \
-e MONGO_URL=mongodb://url \
-e MONGO_OPLOG_URL=mongodb://oplog_url \
-e MAIL_URL=smtp://mail_url.com \
-p 80:80 \
yourname/app
You can optionally avoid downloading Meteor every time when building regularly in development. Add the following to your Dockerfile instead...
FROM jshimko/meteor-launchpad:devbuild
This isn't recommended for your final production build because it creates a much larger image, but it's a bit of a time saver when you're building often in development. The first build you run will download/install Meteor and then every subsequent build will be able to skip that step and just build the app.
Add a docker-compose.yml
to the root of your project with the following content and edit the app image name to match your build name. Everything else should work as-is.
# docker-compose.yml
app:
image: yourname/app
ports:
- "80:80"
links:
- mongo
environment:
- ROOT_URL=http://example.com
- MONGO_URL=mongodb://mongo:27017/meteor
mongo:
image: mongo:latest --storageEngine=wiredTiger
And then start the app and database containers with...
docker-compose up -d