Is there any CI service that will pull from dockerhub?
Given the answer by Nathaniel Waisbrot it seems that Jenkins is a valid choice to get what you are looking for, which is, basically, access to docker hub and bring up a container as part of your build and testing process.
In order get this working you will need a high level of customization (configuration at machine level) for your Jenkins instance. I think ClinkerHQ could fit your needs, since it provides a dedicated hosted environment that can be highly customized (even installing additional tools to use in Jenkins Shell Script steps). You should take a look at the Jenkins Docker plugin if you want to provision Jenkins slaves dinamically with docker.
DISCALIMER: I'm deeply involved in ClinkerHQ.
I do this with Jenkins, using the "execute shell" command to run docker pull
. It's easy to set up: just put Jenkins in the docker
group.
If you use Fig (I haven't converted over to docker-compose to see if it's still a problem there) then you'll need to run things like
/usr/local/bin/python3.4 -c 'import pty, sys; sys.exit(pty.spawn(sys.argv[1:]) != 0)' fig run my_container ./bin/test
because Fig needs a TTY to run.
You could set up a web-hook to trigger Jenkins from the Docker Hub, but I would probably just take the lazy path and either build periodically or trigger on the same Git change as the Hub but with a 30 minute delay.
Edit: I had looked for a hosted solution (like Travis) to do this, rather than running my own Jenkins, but didn't find anything. I think the main problem is that the CI providers make their profit by hosting many customers on one machine. But allowing someone to run arbitrary Docker containers is a major security problem.
You can use Shippable to do this - www.shippable.com
Pull from Docker hub is supported, as is Dockerbuild. You can also enable the workflow of - pull image from docker hub ->pull code from github->test code inside container->if CI passes, push container to Docker Hub. http://blog.shippable.com/making-deployments-even-easier-with-docker-build