c1cf6ab1e5f7f9e66d7daf2279d2061d6e02824c
Currently the Dockerfile has a single RUN directive with all the needed commands in it. This optimizes for image size by not creating too many "layers" (which are only additive). However it means the result that gets cached can basically never be reused, because any change to the source code will need to execute the whole RUN block again. This commit switches to a docker "multi-stage" build, where we have a build image that is separate from the final one that gets published. The build image can be cached locally, and size is no longer a significant concern. This approach allows the single RUN command to be split up into multiple RUN commands that only execute when strictly needed (i.e. when their result is not cached locally). This drastically improves the build time when rebuilding the image after a simple code change, because the build image doesn't have to install all the apt packages, for example. This leads to a nicer developer experience when using docker locally for development and testing.
Snikket Web Portal
Development quickstart
$ direnv allow
$ cp example.env .env
$ $EDITOR .env # to adapt the configuration to your needs
$ pip install -r requirements.txt
$ pip install -r build-requirements.txt
$ make
$ quart run
Configuring
Purely via environment variables
For a list of required and understood environment variables as well as their
semantics, please refer to example.env.
Via python code
In addition to statically setting environment variables, it is possible to
initialise the environment variables in a python file. To do that, pass the
path to the python file as SNIKKET_WEB_PYENV environment variable.
The python file is evaluated before further environment variable processing takes place. Every name defined in that file which begins with an upper case ASCII letter is included in the processing of environment variables for configuration purposes.
For a (non-productive) example of such a file, see example.env.py.
Languages
Python
46.1%
HTML
34.7%
SCSS
13.3%
Jinja
2.9%
Shell
1%
Other
2%
