When it doesn't exist, build it!
Recently I've been working to get my Drone CI testing server up and running efficiently with my Meteor applications, sadly there didn't seem to be any simple Docker containers to test in!
Now I'm not sure if the containers I was looking for were maybe held private or they completely didn't exist, but if you can find one that works really well for running Meteor tests in Docker, and only running the tests please tell me so I can see what I missed. Go on, Google it, I'll wait here.
Back? I can only assume that, as of the time of this writing, the only real container that works properly is the one with my name on it here: https://hub.docker.com/r/firrae/meteor-testing-image/. Please don't take that as bragging, but let's be real here for a moment: this should be something that other people needed! How it hasn't been created yet is beyond me, but I can only hope that it's as useful for others as it has been so far for me. After moving away from my previous solution I have gone from test errors due to the environment, environment errors due to throttling limitations by BitBucket, and a mishmash of other errors I don't remember but got through, to reliably successful builds that contain meaningful errors about things I've broken.
So what did I make? Well it's an ultra simple container. I tried to keep it as light weight as possible considering that Meteor causes the container size to blow up. I have three tags on the container, latest which is pretty much what I'm using to test at any given time and is probably the biggest in size. It's based off Debian Jessie and has Meteor, Node, and PhantomJS installed. Latest, as the name suggest, will contain everything I need as I add new stuff. If you are in need of a Docker container for testing Meteor applications though, and don't need everything I do, then I currently also have two other tags: phantomBase, and base.
phantomBase is as the title implies, it's Meteor with PhantomJS. At this time this is equal to base. The other tag, base, is the most core needs for testing Meteor applications. Built on Debian Jessie as well, the only things I've added are Meteor, and I've set the locale to work for Mongo, which I have also done in the other tags. These are simple but efficient images that should allow anyone to test their Meteor applications using Docker containers, which I have seen as being quite the best possible way to run tests.
If you have questions on any of this leave an issue tagged as a question or hit me up on twitter and we'll see if we can't get you an answer. I plan on going more into my testing platform in the future and I've been thinking of making "When it doesn't exist, build it!" a series as such, as I run into this quite often in my side projects.
Enjoyed this post? Let me know on twitter or grab some RSS.