Ahmad Ammari
Add application files
fab07ce
|
raw
history blame
1.42 kB
# Docker
The folder contains all the docker and docker-compose files,
as oppossed to having yml and docker files hidden in different places.
### Docker-compose for everything
In this project, docker image building, tagging, caching and service orchestration is done by
docker-compose.
All services (even though some are independent and not related) are in the same docker compose file.
When spinning, the specific services required are specified in the docker-compose commands, the
rest of the services are ignored.
For example in the `./run_notebook` script, to run the jupyter notebook for editing,
the `build-notebook` and `run-notebook`
services are used.
To serve voila through nginx, the `build-notebook`, `voila` and `nginx` services are all used.
### Multi-stage builds
As a matter of taste, multi-stage docker images are also used in this project.
These allow you to control the size of the final images and delete the
intermediate ones only used for building (`jupyter/notebook:builder` in this case, produced
by the `build-notebook` service).
In this case, there is no benefit since the builder image and the rest are the same size,
however, in most real cases, the builder image requires a lot more additional stuff
(e.g. download and compilation of external libraries, additional packages, building, testing, ...)
which could make it significantly larger than required for production or deployment.