Sometimes, it is ideal to have a one environment for building the source or for some other action, and another for running it in production.
One soltuion to this would be to have two different dockerfiles along with a shell script to manage them, but this is complex and leads to large container sizes
Instead, multi-stage builds can be added to the docker file to seperate various stages of the development and deployment process.
Docker compose is used to orchestrate the running of several different containers for a singular project
Various configurations can be passed into the docker-compose.yml, so that command line arguments do not need to be used everytime a container needs to be started.
The containers can be started with docker compose up and closed with docker compose down.