Matthew Wild c1cf6ab1e5 Dockerfile: Split build into multiple stages
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.
2022-01-08 13:17:52 +01:00
2021-02-03 18:30:38 +01:00
2021-05-27 17:21:58 +02:00
2021-01-17 20:11:26 +01:00
2021-01-23 12:53:29 +01:00
2021-01-17 20:13:05 +01:00
2021-06-18 16:11:22 +02:00
2021-01-22 15:29:58 +01:00
2020-02-17 16:10:42 +00:00
2021-01-21 18:09:57 +01:00
2021-01-17 20:11:26 +01:00
2021-11-08 18:07:34 +01:00

Snikket Web Portal

Screenshot of the app

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.

Description
This is the web portal for Snikket Chat services. To learn more about what Snikket Chat services are, check the website.
Readme AGPL-3.0 4.8 MiB
Languages
Python 46.1%
HTML 34.7%
SCSS 13.3%
Jinja 2.9%
Shell 1%
Other 2%