Purpose: To run developer dependencies as docker containers inside a VM.
Benetifs:
-
Easier/faster to add & change dependecies. Developers only need to know the syntax of Dockerfile: https://docs.docker.com/reference/builder/
-
Faster download. The first download round might takes awhile, but the overhead for any new/changed container is very low, much lower than re-downloading the whole VM.
-
Boot2docker to run docker containers on any OS (size: 26MB): https://github.com/boot2docker/boot2docker
-
Vagrant and Virtualbox for running boot2docker: https://github.com/mitchellh/boot2docker-vagrant-box
-
docker-compose for building & running containers: https://docs.docker.com/compose/
-
Rake tasks for managing the VM and the containers
-
private docker registry: https://docs.docker.com/registry/deploying/
-
Find a way to avoid port-forwarding for each container in the VM (e.g. we can open all ports)
-
Automate update process on vm start (check docker-compose for this)
-
Remove extra ssh step for entering docker containers (
vagrant ssh
thendocker exec x /bin/bash
) -
Simplify process of adding/updating docker containers. Suggested approach:
-
There is a folder named docker-containers.
-
Each subfolder inside that folder has: service related files, a version file and a Dockerfile.
-
The build script checks the private registry against the remote registry version and (re-)build and push any new or updated container(s).
-
We may avoid docker-compose and rely on some ruby/bash scripts.
-
or We might be able to dockerize build, update and run processes. Having a docker container (with docker-compose inside it) which runs/build/update other containers.
-
-
Boot2docker doesn’t support docker-compose: docker/compose#1032
-
Boot2docker doesn’t have newer version of Docker