While Docker itself needs to be installed manually (so Docker gets listed in the You will need section at the top of the README, for example see You will need in LMS's README), Docker Compose doesn't need to be installed manually and is instead installed automatically, using tox, in all Hypothesis projects. proxy-server should do the same. This means that:
Install is easier because developers don't need to install Docker Compose themselves
tox keeps the version of Docker Compose up to date
We can use tox to force the version of Docker Compose if we need to, and tox will then install our requested version of Docker Compose the next time you run make <ANYTHING> without developers having to do anything. For example if a new version of Docker Compose comes out with a new feature that we want, or if we need to avoid a version of Docker Compose that has an issue
The way automating Docker Compose installation is done is:
While Docker itself needs to be installed manually (so Docker gets listed in the You will need section at the top of the README, for example see You will need in LMS's README), Docker Compose doesn't need to be installed manually and is instead installed automatically, using tox, in all Hypothesis projects. proxy-server should do the same. This means that:
make <ANYTHING>
without developers having to do anything. For example if a new version of Docker Compose comes out with a new feature that we want, or if we need to avoid a version of Docker Compose that has an issueThe way automating Docker Compose installation is done is:
Makefile
commands runtox -e docker-compose ...
, i.e. rundocker-compose
via tox instead of directly. For examples see https://github.com/hypothesis/lms/blob/cfa8fc9c85d270a3610d97f9a173fbe6100aa02f/Makefile#L28-L31 and https://github.com/hypothesis/lms/blob/cfa8fc9c85d270a3610d97f9a173fbe6100aa02f/Makefile#L53-L55tox.ini
listsdocker-compose
as a dependency of thedocker-compose
tox environment: https://github.com/hypothesis/lms/blob/cfa8fc9c85d270a3610d97f9a173fbe6100aa02f/tox.ini#L56tox.ini
listsdocker-compose {posargs}
as the command for thedocker-compose
tox environment: https://github.com/hypothesis/lms/blob/cfa8fc9c85d270a3610d97f9a173fbe6100aa02f/tox.ini#L78