Newer
Older
.. Configuration:
Configuration
=============
This chapter details how a running VS service can be configured. And what steps
are necessary to deploy the configuration.
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
In the following sections, it is indicated, that for an update of the
configuration to take effect some steps need to be taken.
As will be further described, for some configurations it is only required to
"re-deploy" the stack and re-start the services. This is done using the
following commands:
.. code-block:: bash
# scale all services to 0 replicas, effectively pausing the stack
docker service scale ...
# re-deploy the stack (update its configuration)
docker stack deploy -c ...
# scale the services to their original replica count
docker service scale
.. warning::
When calling the ``docker stack deploy`` command, it is vital to use the
command with that the stack was originally created.
In some cases this is not enough, as the configuration was used to for a
metarialized instance which needs to be reverted. The easiest way to do this is
to delete the volume in question. If, for example, the renderer/registrar
configuration was updated, the ``instance-data`` volume needs to be re-created.
First, the stack needs to be shut down. This is done using the following
command:
.. code-block:: bash
docker stack rm <stack-name>
When that command has completed (it is advisable to wait for some time until
all containers have actually stopped) the next step is to delete the
``instance-data`` volume:
.. code-block:: bash
docker volume rm <stack-name>_instance-data
.. note::
It is possible that this command fails, with the error message that the
volume is still in use. In this case, it is advisable to wait for a minute
and to try the deletion again.
Now that the volume was deleted, the stack can be re-deployed, which will
trigger the automatic re-creation and initialization of the volume. For the
``instance-data``, it means that the instance will be re-created and all
database models with it.
-----------------------
These configurations are altering the behavior of the stack itself and its
contained services. A complete reference of the configuration file structure
can be found in `Docker Compose documentation
<https://docs.docker.com/compose/compose-file/>`_.
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
---------------------
These variables are passed to their respective containers environment and
change the behavior of certain functionality. They can be declared in the
Docker Compose configuration file directly, but typically they are bundled by
field of interest and then placed into ``.env`` files and then passed to the
containers. So for example, there will be a ``<stack-name>_obs.env`` file
to store the access parameters for the object storage.
All those files are placed in the ``env/`` directory in the instances
directory.
Environment variables and ``.env`` files are passed to the services via the
``docker-compose.yml`` directives. The following example shows how to pass
``.env`` files and direct environment variables:
.. code-block:: yaml
services:
# ....
registrar:
env_file:
- env/stack.env
- env/stack_db.env
- env/stack_obs.env
- env/stack_redis.env
environment:
INSTANCE_ID: "prism-view-server_registrar"
INSTALL_DIR: "/var/www/pvs/dev/"
SCALEFACTOR: "1"
IN_MEMORY: "false"
INIT_SCRIPTS: "/configure.sh /init-db.sh"
# ...
The following ``.env`` files are typically used:
* ``<stack-name>.env``: The general ``.env`` file used for all services
* ``<stack-name>_db.env``: The database access credentials, for all services
interacting with the database.
* ``<stack-name>_django.env``: This env files defines the credentials for the
django admin user to be used with the admin GUI.
* ``<stack-name>_obs.env``: This contains access parameters for the object
storage(s).
* ``<stack-name>_preprocessor.env``: Preprocessor related environment
variables
* ``<stack-name>_redis.env``: Redis access credentials and queue names
Groups of environment variables
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
GDAL environment variables
This group of environment variables controls the intricacies of GDAL. They
control how GDAL interacts with its supported files. As GDAL supports a
variety of formats and backend access, most of the full `list of env
variables <https://gdal.org/user/configoptions.html>`_ are not applicable and
only a handful are actually relevant for VS.
``GDAL_DISABLE_READDIR_ON_OPEN``
Especially when using an Object Storage backend with a very large number of
files, it is vital to activate this setting (``=TRUE``) in order to
suppress to read the whole directory contents which is very slow for some
OBS backends.
``CPL_VSIL_CURL_ALLOWED_EXTENSIONS``
This limits the file extensions to disable the lookup of so called sidecar
files which are not used for VS. By default this value is used:
``=.TIF,.tif,.xml``.
OpenStack Swift environment variables
These variables define the access coordinates and credentials for the
OpenStack Swift Object storage backend.
``ST_AUTH_VERSION``
``OS_AUTH_URL_SHORT``
``OS_AUTH_URL``
``OS_USERNAME``
``OS_PASSWORD``
``OS_TENANT_NAME``
``OS_TENANT_ID``
``OS_REGION_NAME``
``OS_USER_DOMAIN_NAME``
This set of variables define the credentials for the object storage to
place the preprocessed results.
``OS_USERNAME_DOWNLOAD``
``OS_PASSWORD_DOWNLOAD``
``OS_TENANT_NAME_DOWNLOAD``
``OS_TENANT_ID_DOWNLOAD``
``OS_REGION_NAME_DOWNLOAD``
``OS_AUTH_URL_DOWNLOAD``
``ST_AUTH_VERSION_DOWNLOAD``
This set of variables define the credentials for the object storage to
retrieve the original product files.
VS environment variables
These environment variables are used by VS itself to configure various parts.
.. note::
These variables are used during the initial stack setup. When these
variables are changed, they will not be reflected unless the instance
volume is re-created.
``COLLECTION``
This defines the main collections name. This is used in various parts of
the VS and serves as the layer base name.
``UPLOAD_CONTAINER``
This controls the bucket name where the preprocessed images are uploaded
to.
``DJANGO_USER``, ``DJANGO_MAIL``, ``DJANGO_PASSWORD``
The Django admin user account credentials to use the Admin GUI.
.. note::
These variables are used during the initial stack setup. When these
variables are changed, they will not be reflected unless the database
volume is re-created.
``POSTGRES_USER``
``POSTGRES_PASSWORD``
``POSTGRES_DB``
``DB``
``DB_USER``
``DB_PW``
``DB_HOST``
``DB_PORT``
``DB_NAME``
These are the internal access credentials for the database.
Configuration Files
-------------------
Such files are passed to the containers in a similar way as environment
variables, but usually contain more settings at once and are placed at a
specific path in the container at runtime.
Configuration files are passed into the containers using the ``configs``
section of the ``docker-compose.yaml`` file. The following example shows how
such a configuration file is defined and the used in a service:
# ...
configs:
my-config:
file: ./config/example.cfg
# ...
services:
myservice:
# ...
configs:
- source: my-config
target: /example.cfg
The following configuration files are used throughout the VS:
* ``<stack-name>_init-db.sh``: This shell script files purpose is to set up
the EOxServer instance used by both the renderer and registrar.
* ``<stack-name>_index-dev.html``/``<stack-name>_index-ops.html``: The
clients main HTML page, containing various client settings. The ``dev`` one
is used for development only, whereas the ``ops`` one is used for operational
deployment.
* ``<stack-name>_mapcache-dev.xml``/``<stack-name>_mapcache-ops.xml``: The
configuration file for MapCache, the software powering the cache service.
Similarly to the client configuration files, the ``dev`` and ``ops`` files
used for development and operational usage respectively. Further
documentation can be found at `the official site
<https://mapserver.org/mapcache/config.html>`_.