Use Docker to deploy your application¶
Architecture schema¶
For OpenShift projects:
graph LR client(Web client); k8s[Kubernetes routing]; geoportal[GeoMapFish server<br>camptocamp/geomapfishapp-geoportal]; tcc[TileCloud-chain<br>camptocamp/tilecloud-chain]; tccs[TileCloud-chain slave<br>camptocamp/tilecloud-chain]; mapserver[MapServer<br>camptocamp/mapserver<br>or/and<br>camptocamp/qgis-server]; tinyows[tinyows]; print[Mapfist Print<br>camptocamp/mapfish-print]; alembic[GeoMapFish alembic<br>camptocamp/geomapfishapp-geoportal<br>minor database upgrades]; config[Project config<br>camtocamp/%project%-config<br>provides the config for all other containers]; tools[GeoMapFish tools<br>camptocamp/geomapfishapp-tools]; redis[(Redis)]; redis:::data; postgres[(Postgres)]; postgres:::data; storage[(Object staorage)]; storage:::data; client ==> k8s; k8s ==> geoportal; k8s ==> tcc; geoportal --> tinyows; geoportal ==> mapserver; geoportal -. cache, broadcast .-> redis; geoportal -.-> postgres; geoportal -. raster data .-> storage; tcc -- on the fly --> mapserver; tccs -- pregenertation --> mapserver; tcc -. queue .-> redis; tccs -. queue .-> redis; tcc -. tiles .-> storage; tccs -. tiles .-> storage; geoportal --> print; print --> geoportal; alembic -.-> postgres; mapserver -.-> postgres; mapserver -.-> storage; tinyows -.-> postgres; classDef data fill:#5ba6ff,color:black;
For standalone projects:
graph LR client(Web client); apache[Apache]; subgraph Project composition haproxy[haproxy]; geoportal[GeoMapFish server<br>camptocamp/geomapfishapp-geoportal]; tcc[TileCloud-chain<br>camptocamp/tilecloud-chain]; tccs[TileCloud-chain slave<br>camptocamp/tilecloud-chain]; mapserver[MapServer<br>camptocamp/mapserver<br>or/and<br>camptocamp/qgis-server]; tinyows[tinyows]; print[Mapfist Print<br>camptocamp/mapfish-print]; alembic[GeoMapFish alembic<br>camptocamp/geomapfishapp-geoportal<br>minor database upgrades]; config[Project config<br>camtocamp/%project%-config<br>provides the config for all other containers]; tools[GeoMapFish tools<br>camptocamp/geomapfishapp-tools]; redis[(Redis)]; redis:::data; end subgraph Second project composition haproxy2[haproxy]; end postgres[(Postgres)]; postgres:::data; storage[(File system)]; storage:::data; client ==> apache; apache ==> haproxy; apache ==> haproxy2; haproxy ==> geoportal; haproxy ==> tcc; geoportal --> tinyows; geoportal ==> mapserver; geoportal -. cache, broadcast .-> redis; geoportal -.-> postgres; geoportal -. raster data .-> storage; tcc -- on the fly --> mapserver; tccs -- pregenertation --> mapserver; tcc -. queue .-> redis; tccs -. queue .-> redis; tcc -. tiles .-> storage; tccs -. tiles .-> storage; geoportal --> print; print --> geoportal; alembic -.-> postgres; mapserver -.-> postgres; mapserver -.-> storage; tinyows -.-> postgres; classDef data fill:#5ba6ff,color:black;
Docker Images¶
When you build your application, the following images will be generated:
camptocamp/<package>_geoportal:latest
camptocamp/<package>_config:latest
The tag is by default latest
, but you can change it by setting the DOCKER_TAG
Makefile variable.
Docker compose files¶
docker-compose.yaml
: The main file that describes the composition.docker-compose-lib.yaml
: Provide the base description of Geomapfish Docker services..env
: Generated from the env files; contains the environment variables used by the composition.docker-compose.override[.sample].yaml
: Some rules for debugging..env
: The variable used in the compose files.
Run the developer composition¶
docker compose up -d
You can then access your application with https://localhost:8484/.
Clean¶
Docker does not clean anything automatically, in particular it does not clean any images, therefore disk space may become problematic after a certain number of builds. You can use the following commands to manually remove Docker files.
Use docker system prune
to clean files; you can add the --all
option to do a deeper clean.
Environment variables¶
The GeoMapFish containers can be customized with some environment variables:
Config:
VISIBLE_WEB_HOST
: The web host visible by the browser e.g.: ‘example.com’.
VISIBLE_ENTRY_POINT
: The web path visible by the browser e.g.: ‘/main/’, default to ‘/’.
PGSCHEMA
: The PostgreSQL schema, used to build the access control SQL related to the restriction area.
GEOPORTAL_INTERNAL_URL
: Used by the print in non mutualize mode.
TILECLOUDCHAIN_INTERNAL_URL
: Used by the print in non mutualize mode.
ST_JOIN
: Can beST_Collect
(default) orST_Union
,ST_Collect
is better for performance but does not support restriction area intersection.
DISABLE_HAPROXY_LOGGING
: Set to # to disable haproxy logging. By default haproxy redirect logs to the host/dev/log
socket and they are visible with journalctl
HAPROXY_LOGGING_OPTIONS
: Allow to overwrite or add new logging options to haproxy.
Geoportal:
VISIBLE_ENTRY_POINT
: The web path visible by the browser e.g.: ‘/main/’, default to ‘/’.
PGSCHEMA
: The PostgreSQL schema, used by MapServer.
AUTHTKT_TIMEOUT
: See: Authentication.
AUTHTKT_REISSUE_TIME
: See: Authentication.
AUTHTKT_MAXAGE
: See: Authentication.
AUTHTKT_SECRET
: See: Authentication.
AUTHTKT_COOKIENAME
: See: Authentication.
AUTHTKT_HTTP_ONLY
: See: Authentication.
AUTHTKT_SECURE
: See: Authentication.
AUTHTKT_SAMESITE
: See: Authentication.
BASICAUTH
: See: Authentication.
LOG_TYPE
: Should be ‘console’ with Docker Compose and ‘json’ with OpenShift.
LOG_LEVEL
: Log level for your application, default toINFO
, can beDEBUG
,INFO
,WARNING
,ERROR
,CRITICAL
orNOTSET
, see also theproduction.ini
file and the logging documentation.
C2CGEOPORTAL_LOG_LEVEL
: Log level for all c2cgeoportal modules, default toWARN
.
C2CWSGIUTILS_LOG_LEVEL
: Log level for c2cwsgiutils, default toINFO
.
GUNICORN_LOG_LEVEL
: Log level for Gunicorn, default toINFO
.
SQL_LOG_LEVEL
: Log level for the SQLAlchemy engine``, default toWARN
.
DOGPILECACHE_LOG_LEVEL
: Log level for Dogpile cache, default toINFO
.
OTHER_LOG_LEVEL
: Log level for other modules, default toWARN
.
C2CGEOPORTAL_THEME_TIMEOUT
: Timeout in seconds used in requests on OGC servers during themes generation, default to300
.
QGIS server:
GEOMAPFISH_CONFIG
: The GeoMapFish config file, default to/etc/qgisserver/geomapfish.yaml
.
GEOMAPFISH_OGCSERVER
: The OGC server name in single QGIS project mode.
GEOMAPFISH_ACCESSCONTROL_CONFIG
: The access control config file for multi QGIS project mode.
GEOMAPFISH_POSITION
: The plugin position, default to100
.
LOG_LEVEL
: Log level for the GeoMapFish plugins, see also thelogging.ini
file.
C2CGEOPORTAL_LOG_LEVEL
: Log level for all c2cgeoportal modules, default toINFO
.
C2CWSGIUTILS_LOG_LEVEL
: Log level for c2cwsgiutils, default toINFO
.
SQL_LOG_LEVEL
: Log level for the SQLAlchemy engine``, default toWARN
.
OTHER_LOG_LEVEL
: Log level for other modules, default toWARN
.
QGIS_SERVER_LOG_LEVEL
: Qgis server log level, default to2
,0
for verbose.
CPL_VSIL_CURL_USE_CACHE
: GDAL option, default toTRUE
.
CPL_VSIL_CURL_CACHE_SIZE
: GDAL option, default to128000000
.
CPL_VSIL_CURL_USE_HEAD
: GDAL option, default toFALSE
.
GDAL_DISABLE_READDIR_ON_OPEN
: GDAL option, default toTRUE
.