Intro

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.

Suggested Components

TODOs

  • 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 then docker 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.

Issues

  • Boot2docker doesn’t support docker-compose: docker/compose#1032

  • Boot2docker doesn’t have newer version of Docker