Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/camptocamp/docker-qgis-server
All that is needed to generate a proper QGIS server image
https://github.com/camptocamp/docker-qgis-server
geospatial
Last synced: 17 days ago
JSON representation
All that is needed to generate a proper QGIS server image
- Host: GitHub
- URL: https://github.com/camptocamp/docker-qgis-server
- Owner: camptocamp
- License: gpl-2.0
- Created: 2016-10-12T08:02:13.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2024-04-13T03:15:45.000Z (8 months ago)
- Last Synced: 2024-04-14T01:51:23.029Z (8 months ago)
- Topics: geospatial
- Language: Dockerfile
- Size: 1.56 MB
- Stars: 34
- Watchers: 16
- Forks: 8
- Open Issues: 17
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Security: SECURITY.md
Awesome Lists containing this project
- awesome-starred - camptocamp/docker-qgis-server - All that is needed to generate a proper QGIS server image (others)
README
# Docker image for QGIS server
## Usage
The Docker container needs to have access to all files of the QGIS project to be published.
Either you create another image to add the files or you inject them using a volume.
For example, if your QGIS project is stored in `./qgis/project.qgz`:```bash
docker run --detach --publish=8380:80 --volume=${PWD}/qgis:/etc/qgisserver camptocamp/qgis-server
```With the previous command, you'll get to your server with this URL:
http://localhost:8380/?MAP=/etc/qgisserver/project.qgz&SERVICE=WMS&REQUEST=GetCapabilities## Tuning
You can use the following variables (`-e` option in `docker run`):
- `QGIS_CATCH_SEGV`: Set to `1` if you want stacktraces in the logs in case of segmentation faults by running `tail -f /var/log/qgis.log` in the container
- `FCGID_MAX_REQUESTS_PER_PROCESS`: The number of requests a QGIS server will serve before being restarted by apache
- `FCGID_MIN_PROCESSES`: The minimum number of fcgi processes to keep (defaults to `1`)
- `FCGID_MAX_PROCESSES`: The maximum number of fcgi processes to keep (defaults to `5`)
- `FCGID_IO_TIMEOUT`: This is the maximum period of time the module will wait while trying to read from or
write to a FastCGI application (default is `40`)
- `FCGID_BUSY_TIMEOUT`: The maximum time limit for request handling (defaults to `300`)
- `FCGID_IDLE_TIMEOUT`: Application processes which have not handled a request for
this period of time will be terminated (defaults to `300`)
- `FILTER_ENV`: Filter the environment variables with e.g.:
`| grep -vi _SERVICE_ | grep -vi _TCP | grep -vi _UDP | grep -vi _PORT` to remove the default
Kubernetes environment variables (default in an empty string)
- `GET_ENV`: alternative to `FILTER_ENV`, a command that return the environment variables (defaults to `env`)[See also QGIS server documentation](https://docs.qgis.org/latest/en/docs/server_manual/config.html?highlight=environment#environment-variables)
Fonts present in the `/etc/qgisserver/fonts` directory will be installed and thus usable by QGIS.
## Get a stack trace in case of segfault
To get a good stack trace you should use the `-debug` image.
Run the querty that makes the server crash, then:
Open a bash as root on the container with something like: `docker compose exec --user=root qgisserver bash`, then:
```bash
CORE_FILENAME=$(ls -tr1 /tmp/|grep core|tail -n 1)
gdb /usr/local/bin/qgis_mapserv.fcgi /tmp/${CORE_FILENAME}
```The command `bt` will give you the stack trace.
## Running the client
If you want to edit a project file, you can run the client from a Linux machine with the following command:
```bash
docker run --rm -ti --env=DISPLAY=unix${DISPLAY} --volume=/tmp/.X11-unix:/tmp/.X11-unix --volume=${HOME}:${HOME} camptocamp/qgis-server:master-desktop
```## Changelog
### QGIS 3.22
We removed the default values for the following environment variables to better fit with the QGIS documentation:
- `QGIS_SERVER_LOG_LEVEL`, was `0`
- `QGIS_PROJECT_FILE`, was `/etc/qgisserver/project.qgs`
- `MAX_CACHE_LAYERS`, was `""`
- `QGIS_AUTH_DB_DIR_PATH`, was `/etc/qgisserver/`
- `PGSERVICEFILE`, was `/etc/qgisserver/pg_service.conf`## Contributing
Install the pre-commit hooks:
```bash
pip install pre-commit
pre-commit install --allow-missing-config
```