# Docker Compose Documentation on how the LOFAR station control software utilizes docker-compose. This documentation is intended for developers listing strategies and their respective advantages and disadvantages. In addition, this documentation contains developer expectations that they should uphold to. ## Image tagging and change detection Preventing unnecessary builds of docker images reduces build times and increases iteration speed. In order to achieve this the project requires properly tagged images and mechanisms for change detection. For change detection the system relies on git. Git is used to determine the directories that have changes between the current and previous commit. ### Types of containers and specific strategies. - Devices - Simulators - Base images - Services Devices, are currently bound to the host upon building due to the intrinsics of how environment variables are used. They will have to be rebuild and can not be pulled from a local registry. Simulators, Since the source code for simulators is maintained by other teams we can not accurately determine from our repository if the simulator has changed. Instead, the images should be build by the teams their respective CI pipelines. We would simply pull these images. Base images, these are detected by changes to the .env file in the docker-compose directory. Services, these are detected by changes to the .yml file or directory of the respective service inside the docker-compose directory.