Skip to content

Additional information#

This section provides the following additional information:

Steps to perform descriptors matching#

To start the descriptors matching procedure using LIM services, you should perform the following steps:

  • select the preferred mode that will be used for the descriptors matching — one-time or automatic.
  • One-time mode: Specify the required "list_id" in the request body to the "create task" resource of the Index Manager service and perform the request.
  • Automatic mode for working with specific lists: Specify the required "list_id" in the "indexing_lists" setting of the "LIM_MANAGER_INDEXING" of the Configurator service.
  • Automatic mode for working with all existing lists:
    • Specify the "dynamic" value in the "indexing_lists" setting of the "LIM_MANAGER_INDEXING" of the Configurator service.
    • Specify the minimum number of faces in the list in the "min_indexing_list_size" setting of the "LIM_MANAGER_INDEXING" of the Configurator service to index all existing descriptors in the lists.
  • Send a request for matching descriptors from the API service.

For details on LIM service interaction, see the "Service interaction" section of the LIM administrator manual.

Docker commands#

Show containers#

To show the list of launched Docker containers use the command:

docker ps

To show all the existing Docker containers use the command:

docker ps -a 

Copy files to container#

You can transfer files into the container. Use the docker cp command to copy a file into the container.

docker cp <file_location> <container_name>:<folder_inside_container>

Enter container#

You can enter individual containers using the following command:

docker exec -it <container_name> bash

To exit the container, use the command:

exit

Images names#

You can see all the names of the images using the command:

docker images

Delete image#

If you need to delete an image:

  • Run the docker images command.
  • Find the required image, for example dockerhub.visionlabs.ru/luna/luna-image-store.
  • Copy the corresponding image ID from the IMAGE ID, for example, "61860d036d8c".
  • Specify it in the deletion command:
docker rmi -f 61860d036d8c

Delete all the existing images.

docker rmi -f $(docker images -q)

Stop container#

You can stop the container using the command:

docker stop <container_name>

Stop all the containers:

docker stop $(docker ps -a -q)

Delete container#

If you need to delete a container:

  • Run the "docker ps" command.
  • Stop the container (see Stop container).
  • Find the required image, for example dockerhub.visionlabs.ru/luna/luna-image-store.
  • Copy the corresponding container ID from the CONTAINER ID column, for example, "23f555be8f3a".
  • Specify it in the deletion command:
docker container rm -f 23f555be8f3a

Delete all the containers.

docker container rm -f $(docker container ls -aq)

Check service logs#

You can use the following command to show logs for the service:

docker logs <container_name>

Launching parameters description#

When launching a Docker container for a LUNA Index Module service you should specify additional parameters required for the service launching.

The parameters specific for a particular container are described in the section about this container launching.

All the parameters given in the service launching example are required for proper service launching and utilization.

Launching services parameters#

Example command of launching LP services containers:

docker run \
--env=CONFIGURATOR_HOST=127.0.0.1 \
--env=CONFIGURATOR_PORT=5070 \
--env=PORT=<Port_of_the_launched_service> \
--env=WORKER_COUNT=1 \
--env=RELOAD_CONFIG=1 \
--env=RELOAD_CONFIG_INTERVAL=10 \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/<service>:/srv/logs/ \
--name=<service_container_name> \
--restart=always \
--detach=true \
--network=host \
dockerhub.visionlabs.ru/luna/<service-name>:<version>

The following parameters are used when launching LP services containers:

  • docker run — Command for running the selected image as a new container.

  • dockerhub.visionlabs.ru/luna/<service-name>:<version> — Sets the image required for the container launching.

Links to download the container images you need are available in the description of the corresponding container launching.

  • --network=host — Sets that a network is not simulated and the server network is used. If you need to change the port for third-party party containers, you should change this string to -p 5440:5432. Where the first port 5440 is the local port and 5432 is the port used inside the container. The example is given for PostgreSQL.

  • --env= — Sets the environment variables required to run the container (see the "Service arguments" section).

  • --name=<service_container_name> — Sets the name of the launched container. The name must be unique. If there is a container with the same name, an error will occur.

  • --restart=always — Sets a restart policy. The daemon will always restart the container regardless of the exit status.

  • --detach=true — Run the container in the background mode.

  • -v — Enables you to mount the content of a server folder into a volume in the container. Thus their contents will synchronize. The following general data is mounted:

  • /etc/localtime:/etc/localtime:ro — Sets the current time zone used by the system in the container.

  • /tmp/logs/<service>:/srv/logs/ — Enables copying of the folder with service logs to your server /tmp/logs/<service> directory. You can change the directory where the logs will be saved according to your needs.

Service arguments#

Each service in LUNA PLATFORM has its own launch arguments. These arguments can be passed through:

  • Setting a flag for the launch script (run.py) of the corresponding service.
  • Setting environment variables (--env) on the Docker command line.

For example, using the --help flag you can get a list of all available arguments. An example of passing an argument to an API service:

docker run --rm dockerhub.visionlabs.ru/luna/luna-api:v.6.36.0 python3 /srv/luna_api/run.py --help

List of main arguments:

Launch flag

Environment variable

Description

--port

PORT

Port on which the service will listen for connections.

--workers

WORKER_COUNT

Number of workers for the service.

--log_suffix --log_suffix

LOG_SUFFIX LOG_SUFFIX

Suffix added to log file names (with the option to write logs to a file enabled).

--config-reload

RELOAD_CONFIG

Enable automatic configuration reload. See "Automatic configurations reload" in the LUNA PLATFORM 5 administrator manual.

--pulling-time

RELOAD_CONFIG_INTERVAL

Configuration checking period (default 10 seconds). See "Automatic configurations reload" in the LUNA PLATFORM 5 administrator manual.

--luna-config --luna-config

CONFIGURATOR_HOST, CONFIGURATOR_PORT

Address of the Configurator service for downloading settings. For --luna-config it is sent in the format http://localhost:5070/1. For environment variables, the host and port are set explicitly. If the argument is not given, the default configuration file will be used.

--config

None

Path to the file with service configurations.

--<config_name>

--EXTEND_CMD=<config_name>

Tag of the specified configuration in the Configurator. When setting this configuration, the value of the tagged configuration will be used. Example: --LUNA_MONITORING TAG_1 |

Note: You must pre-tag the appropriate configuration in. Configurator.

Note: Only works with the --luna-config flag.

--tls_cert

None

Path to the SSL certificate for launching the service using the HTTPS protocol.

--tls_key

None

Path to the SSL private key for launching the service using the HTTPS protocol.

--tls_key_pass

None

Password for the SSL private key for launching the service using the HTTPS protocol.

The list of arguments may vary depending on the service.

It is also possible to override the settings of services at their start using environment variables.

The VL_SETTINGS prefix is used to redefine the settings. Examples:

  • --env=VL_SETTINGS.LUNA_MONITORING.SEND_DATA_FOR_MONITORING=0. Using the environment variable from this example will set the "SEND_DATA_FOR_MONITORING" setting for the LUNA_MONITORING section to "0".
  • --env=VL_SETTINGS.OTHER.STORAGE_TIME=LOCAL. For non-compound settings (settings that are located in the "OTHER" section in the configuration file), you must specify the "OTHER" prefix. Using the environment variable from this example will set the value of the "STORAGE_TIME" setting (if the service uses this setting) to "LOCAL".

Passing flags using environment variable

Flags for which an environment variable is not explicitly allocated can be passed using the environment variable EXTEND_CMD.

For example, you can pass the configurations tag in the following way:

--env=EXTEND_CMD="--LUNA_MONITORING=TAG_1 --LUNA_EVENTS_DB=TAG_2"
  • /var/lib/luna/lim_storage:/srv/local_storage — enables you to mount a directory for storing indexes in local storage. The location and name of the directory for storing indexes inside LIM containers is set in the "INDEX_STORAGE_LOCAL" settings of the LIM services. Note that the directory must be the same for all three services. The local directory can be changed according to your needs.

Creating DB parameters#

Example command of launching containers for database migration or database creation:

docker run \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/<service>:/srv/logs/ \
--rm \
--network=host \
dockerhub.visionlabs.ru/luna/<service-name>:<version> \
python3 ./base_scripts/db_create.py --luna-config http://localhost:5070/1

The following parameters are used when launching containers for database migration or database creation:

Here:

  • --rm — Sets if the container is deleted after all the specified scripts finish processing.

  • python3 ./base_scripts/db_create.py — Sets Python version and a script db_create.py launched in the container. The script is used for the database structure creation.

  • --luna-config http://localhost:5070/1 — Sets where the launched script should receive configurations. By default, the service requests configurations from the Configurator service.

Logging to server#

To enable saving logs to the server, you should:

  • Create directories for logs on the server.
  • Activate log recording and set the location of log storage inside LP service containers.
  • Configure synchronization of log directories in the container with logs on the server using the volume argument at the start of each container.

Create logs directory#

Below are examples of commands for creating directories for saving logs and assigning rights to them for all LUNA PLATFORM services.

mkdir -p /tmp/logs/lim-manager /tmp/logs/lim-indexer /tmp/logs/lim-matcher /tmp/logs/python-matcher-proxy
chown -R 1001:0 /tmp/logs/lim-manager /tmp/logs/lim-indexer /tmp/logs/lim-matcher /tmp/logs/python-matcher-proxy

Logging activation#

To enable logging to file, you need to set the log_to_file and folder_with_logs settings in the <SERVICE_NAME>_LOGGER section of the settings for each service.

Automatic method

To update logging settings, you can use the logging.json settings file provided with the distribution package.

Run the following command:

docker cp /var/lib/luna/lim-current/example-docker/configs/logging.json luna-configurator:/srv/luna_configurator/used_dumps/logging.json

Update your logging settings with the copied file.

docker exec -it luna-configurator python3 ./base_scripts/db_create.py --dump-file /srv/luna_configurator/used_dumps/logging.json

Manual method

Go to the Configurator service interface (127.0.0.1:5070) and set the logs path in the container in the folder_with_logs parameter for all services whose logs need to be saved. For example, you can use the path /srv/logs.

Set the log_to_file option to true to enable logging to a file.

Mounting directories with logs when starting services#

The log directory is mounted with the following argument when starting the container:

-v <server_logs_folder>:<container_logs_folder> \

where <server_logs_folder> is the directory created in the create logs directory step, and <container_logs_folder> is the directory created in the activate logging step.

Example of command to launch the Index Manager service with mounting a directory with logs:

docker run \
--env=CONFIGURATOR_HOST=127.0.0.1 \
--env=CONFIGURATOR_PORT=5070 \
--env=PORT=5190 \
--env=WORKER_COUNT=1 \
--env=RELOAD_CONFIG=1 \
--env=RELOAD_CONFIG_INTERVAL=10 \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/lim-manager:/srv/logs \
-v /var/lib/luna/lim_storage:/srv/local_storage \
--name=lim-manager \
--restart=always \
--detach=true \
--network=host \
dockerhub.visionlabs.ru/luna/lim-manager:v.0.5.6

The example container launch commands in this documentation contain these arguments.