5 Commits

Author SHA1 Message Date
Ivan Gabaldon
3de7a6da2d [enh] container: tidy builds (#5086)
Building the container currently does not work properly.
When rebuilding several times with `make container`, `version_frozen.py`
is recreated, which wouldn't be an issue if the file’s timestamp was constant.
Now, when creating `version_frozen.py`, it will have the same timestamp as the
commit when it was created. (`version_frozen.py` is moved to a dedicated layer).

Reusing "builder" cache when building "dist" could be slow
(CD reports 2 seconds, but locally I've seen it take up to 10 seconds),
so the Dockerfile is now split and we save a couple steps
by importing the "builder" image directly.

The last changes made it possible to remove the layer cache in "builder",
since the overhead is now greater than building the layers from scratch.

Until now, all "dist" layers were squashed into a single layer,
which in most cases is a good idea
(except for storage/delivery pricing/overhead), but in our case,
since we manage the entire pipeline, we can ignore this
and share layers between builds.
This means (for example) that if we change files unrelated to the container
in several consecutive commits (documentation changes), we don't have to push
the entire image to registry, but only the different layers
(`version_frozen.py` in this example).
The same applies when pulling, as only the layers that have changed
compared to the local layers will be downloaded (that's the theory,
we'll see if this works as expected or if we need to tweak something else).
2025-08-07 10:46:26 +02:00
Markus Heiser
7ef6ffa803 [fix] tidy up ignore lists .gitignore & .dockerignore
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2021-06-22 16:55:30 +02:00
Dalf
4a35975b42 [enh] update documentation about docker 2020-07-22 14:58:04 +02:00
Markus Heiser
ec453e0239 [fix] docker 'Error compiling' and 'SyntaxError' messages
The make docker target spits out some SyntaxError.  With this .dockerignore
there is no more error. Explanation:

- the python files are compiled while building the docker image
- a node modules contains some python files
- the python files inside the node module doesn't compile

It raises the fact that node_modules were included in the docker image which
should not happen.  Same the local directory was included.  Dockerfile builds
searx in its own way (without virtualenv)

Thanks @dalf:

- https://github.com/asciimoo/searx/pull/1900#issuecomment-604892737

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2020-03-29 11:06:22 +02:00
Dalf
fbe40001d3 Update Docker image
See #1561 , use uwsgi and Alpine Linux

Volume:
/var/log/uwsgi contains error log for 2 days (file uwsgi.log)
/etc/searx contains the settings.yml and uwsgi.ini files.
The docker image creates them if they don't exist.
The two files can be modified after the first run. See below.

Environement variables:
MORTY_URL : external URL of Morty
MORTY_KEY : base64 encoded key
BASE_URL : external URL of Searx
BIND_ADDRESS : internal HTTP port to listen to

Labels : org.label-schema.schema.*

Parameters:
-h : display this help
-d : will update the settings and quit immediately (settings.yml and uwsgi.ini)
-f : always update the settings (previous version saved with suffix .old).
     without this parameter, the new settings are copied with suffix .new

When the Docker image contains newer settings:
- without -f parameter: the new versions are copied to /etc/searx/settings.yml.new and /etc/searx/uwsgi.ini.new.
- with -f parameter:  the old versions are renamed with .old suffix. The new version replaces /etc/searx/settings.yml and /etc/searx/uwsgi.ini

Build using "./manage.sh docker_build", add "push" as parameter also push the Docker image.
The script requires a git repository to work (it makes sure that the last git tag matches searx/version.py)
"git describe" is used to create a meaningful version.
Example : 0.15.0-90-49c5bcb4-dirty (dirty means that the docker image was made with uncommited changes).

Use "docker inspect -f {{.Config.Labels.version}} searx" to get the version of an existing image.

.dockerignore based on .gitignore

.travis.yml: include docker stage
2019-07-13 15:49:59 +02:00