Services launch#
This section gives examples for:
- Databases tables migration
- Buckets creation
- Launching of containers
LUNA PLATFORM services must be launched in the following sequence:
- Databases, Balancers, HASP service and other third-party party software
- Configurator
- Image Store
- Accounts
- Licenses
- Faces
- Events
- Python Matcher
- Python Matcher Proxy. The service is disabled by default.
- Handlers
- Tasks
- Sender
- API
- Admin
Next, you need to launch the Backport 4 service and its user interface:
It is recommended to launch containers one by one and wait for the container status to become "up" (use the docker ps
command).
Some of these services are optional and you can disable their use. It is recommended to use Events, Tasks, Sender and Admin services by default. See the "Optional services usage" section for details.
When launching each service, certain parameters are used, for example, --detach
, --network
, etc. See the section "Launching parameters description" for more detailed information about all launch parameters of LUNA PLATFORM services and databases.
See the "Docker commands" section for details about working with containers.
Monitoring configuration#
Monitoring LUNA PLATFORM services requires running the Influx 2.0.8-alpine database. Below are the commands to launch the Influx container.
For more information, see the "Monitoring" section in the administrator manual.
If necessary, you can configure the visualization of monitoring data using the LUNA Dashboards service, which includes a configured Grafana data visualization system. In addition, you can launch the Grafana Loki tool for advanced work with logs. See the instructions for launching LUNA Dashboards and Grafana Loki in the "Monitoring and logs visualization using Grafana" section.
InfluxDB OSS 2#
Note! If you already have InfluxDB 2.0.8-alpine installed, skip this step.
Use the docker run
command with these parameters:
docker run \
-e DOCKER_INFLUXDB_INIT_MODE=setup \
-e DOCKER_INFLUXDB_INIT_BUCKET=luna_monitoring \
-e DOCKER_INFLUXDB_INIT_USERNAME=luna \
-e DOCKER_INFLUXDB_INIT_PASSWORD=password \
-e DOCKER_INFLUXDB_INIT_ORG=luna \
-e DOCKER_INFLUXDB_INIT_ADMIN_TOKEN=kofqt4Pfqjn6o0RBtMDQqVoJLgHoxxDUmmhiAZ7JS6VmEnrqZXQhxDhad8AX9tmiJH6CjM7Y1U8p5eSEocGzIA== \
-v /etc/localtime:/etc/localtime:ro \
-v /var/lib/luna/current/example-docker/influx:/var/lib/influxdb2 \
--restart=always \
--detach=true \
--network=host \
--name influxdb \
dockerhub.visionlabs.ru/luna/influxdb:2.0.8-alpine
If you need to set the custom settings of the Influx DB (for example, set the IP address and port when launching Influx on separate server), then you need to change them in the configurations of each LUNA PLATFORM service. See the section "Set custom Influx settings" for more information.
Configurator#
Optional services usage#
The listed below services are not mandatory for LP. You can disable them if their functionality is not required for your tasks.
Use the "ADDITIONAL_SERVICES_USAGE" section in the API service settings in the Configurator service to disable unnecessary services.
Optional services
Service | Dependent services |
---|---|
Events | API, Admin, Handlers, Tasks. |
Tasks | API, Admin, Handlers |
Sender | API, Admin, Handlers |
Python Matcher Proxy (disabled by default) | API, Admin, Handlers, Tasks. |
The API service does not depend on the state of the Admin, Backport3, Backport4, User Interface 3 and User Interface 4 services. These services do not need to be changed in the Configurator service, it is enough just not to launch them.
You can use the dump file provided in the distribution package to enable/disable services from the "Optional services" table before Configurator launch.
vi /var/lib/luna/current/extras/conf/platform_settings.json
You must restart a dependent service after changing its parameters if the service was already launched.
Migrate PostgreSQL 9.6 database#
The new version of LUNA PLATFORM uses the PostgreSQL 12 database. It is necessary to migrate the PostgreSQL 9.6 database.
Back up the PostgreSQL 9.6 database by exporting the data to the SQL migration script. The script will be saved to the current directory.
docker exec -t postgres pg_dumpall -c -U luna > db9_6.sql
Delete the old PostgreSQL 9.6 database container:
docker rm -f postgres
Launch the PostgreSQL database container 12:
docker run \
--env=POSTGRES_USER=luna \
--env=POSTGRES_PASSWORD=luna \
--shm-size=1g \
-v /var/lib/luna/current/example-docker/postgresql/data/:/var/lib/postgresql/data/ \
-v /var/lib/luna/current/example-docker/postgresql/entrypoint-initdb.d/:/docker-entrypoint-initdb.d/ \
-v /etc/localtime:/etc/localtime:ro \
--name=postgres \
--restart=always \
--detach=true \
--network=host \
dockerhub.visionlabs.ru/luna/postgis-vlmatch:12
Copy the SQL migration script to the PostgreSQL 12 database container:
docker cp db9_6.sql postgres:/db9_6.sql
Perform the migration:
docker exec -t postgres psql -U luna -f /db9_6.sql
Delete the used SQL migration script from the PostgreSQL 12 database container:
docker exec postgres rm /db9_6.sql
Delete the used SQL migration script from the current directory:
rm -f db9_6.sql
Activate PostGIS in the PostgreSQL 12 database:
docker exec postgres psql -U luna -d luna_events -c "CREATE EXTENSION postgis;"
Configurator DB recreation#
It is not required to migrate Configurator database as it should be created from scratch and filled in manually.
Use the following commands to delete and create the Configurator service database.
Delete the old database:
docker exec -it postgres psql -U luna -c "DROP DATABASE luna_configurator;"
Create the new database:
docker exec -it postgres psql -U luna -c "CREATE DATABASE luna_configurator;"
Grant privileges to the database user:
docker exec -it postgres psql -U luna -c "GRANT ALL PRIVILEGES ON DATABASE luna_configurator TO luna;"
Allow user to authorize in the DB:
docker exec -it postgres psql -U luna -c "ALTER ROLE luna WITH LOGIN;"
Configurator DB tables creation#
Use the docker run
command with these parameters to create the Configurator database tables.
docker run \
-v /etc/localtime:/etc/localtime:ro \
-v /var/lib/luna/current/example-docker/luna_configurator/configs/luna_configurator_postgres.conf:/srv/luna_configurator/configs/config.conf \
-v /var/lib/luna/current/extras/conf/platform_settings.json:/srv/luna_configurator/used_dumps/platform_settings.json \
--network=host \
-v /tmp/logs/configurator:/srv/logs \
--rm \
--entrypoint bash \
dockerhub.visionlabs.ru/luna/luna-configurator:v.2.1.5 \
-c "python3 ./base_scripts/db_create.py; cd /srv/luna_configurator/configs/configs/; python3 -m configs.migrate --config /srv/luna_configurator/configs/config.conf head; cd /srv; python3 ./base_scripts/db_create.py --dump-file /srv/luna_configurator/used_dumps/platform_settings.json"
/var/lib/luna/current/extras/conf/platform_settings.json
- enables you to specify the path to the dump file with LP configurations.
./base_scripts/db_create.py;
- creates database structure.
python3 -m configs.migrate head;
- performs settings migrations in Configurator DB and sets revision for migration. The revision will be required during the upgrade to the new LP5 build.
--dump-file /srv/luna_configurator/used_dumps/platform_settings.json
- updates settings in the Configurator DB with values from the provided file.
Run Configurator container#
Use the docker run
command with these parameters to launch Configurator:
docker run \
--env=PORT=5070 \
--env=WORKER_COUNT=1 \
--env=RELOAD_CONFIG=1 \
--env=RELOAD_CONFIG_INTERVAL=10 \
-v /etc/localtime:/etc/localtime:ro \
-v /var/lib/luna/current/example-docker/luna_configurator/configs/luna_configurator_postgres.conf:/srv/luna_configurator/configs/config.conf \
-v /tmp/logs/configurator:/srv/logs \
--name=luna-configurator \
--restart=always \
--detach=true \
--network=host \
dockerhub.visionlabs.ru/luna/luna-configurator:v.2.1.5
At this stage, you can activate logging to file if you need to save them on the server (see the "Logging to server" section).
Changing the neural network version#
For successful migration, it is necessary to change the version of the neural network to extract body descriptors in the "DEFAULT_HUMAN_DESCRIPTOR_VERSION" setting of the Handlers service.
Follow these steps:
- open the Configurator user interface
http://<configurator_server_ip>:5070
; - enter the name of the setting "DEFAULT_HUMAN_DESCRIPTOR_VERSION" in the "Setting name" field and click "Apply";
- set the neural network model "107" in the "DEFAULT_HUMAN_DESCRIPTOR_VERSION" setting;
- save the changes by clicking the "Save" button.
Image Store#
Samples migrations#
To migrate from LUNA PLATFORM 4 you can assign an account to all the samples in your Image Store bucket. Otherwise all the objects created for the LUNA PLATFORM 4 can be accessed within any account, and also without any account.
You can skip the following script execution if the samples should not be linked to any account and can be accessed from any account.
Create a backup of all the samples buckets before launching the following script.
You should launch the "migrate_4_to_5.py" script to update account information for the stored samples.
Set user permissions:
chown -R 1001:0 /var/lib/luna/luna_v.4.5.4/example-docker-compose/image_store/
You should use existing buckets during the samples migration script execution. Set up actual storage configurations for the Image Store service in the Configurator service user interface.
docker run \
--rm -t \
-v /tmp/logs/image-store:/srv/logs \
-v /var/lib/luna/luna_v.4.5.4/example-docker-compose/image_store/:/srv/luna_image_store/local_storage/ \
--network=host \
--entrypoint bash dockerhub.visionlabs.ru/luna/luna-image-store:v.3.8.2 \
-c "python3 ./base_scripts/accounting/migrate_4_to_5.py --account_id=<account_id> --bucket=visionlabs-samples"
-v /var/lib/luna/luna_v.4.5.4/example-docker-compose/image_store/
- you should specify your current path to the local_storage of the Image Store samples.
<account_id>
- you should specify the account ID which will have access to all the samples from the specified bucket (visionlabs-samples
).
You should specify the current directory with samples buckets
("/var/lib/luna/luna_v.4.5.4/luna-image-store/luna_image_store/local_storage/" by default)
instead of "/var/lib/luna/current/example-docker/image_store/" during the Image Store container launching:
-v /var/lib/luna/current/example-docker/image_store/:/srv/local_storage/
See section Image Store container launch.
Image Store container launch#
Use the following command to launch the Image Store service:
docker run \
--env=CONFIGURATOR_HOST=127.0.0.1 \
--env=CONFIGURATOR_PORT=5070 \
--env=PORT=5020 \
--env=WORKER_COUNT=1 \
--env=RELOAD_CONFIG=1 \
--env=RELOAD_CONFIG_INTERVAL=10 \
-v /var/lib/luna/current/example-docker/image_store/:/srv/local_storage/ \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/image-store:/srv/logs \
--name=luna-image-store \
--restart=always \
--detach=true \
--network=host \
dockerhub.visionlabs.ru/luna/luna-image-store:v.3.8.2
-v /var/lib/luna/current/example-docker/image_store/:/srv/local_storage/
- the data from the specified folder is added to the Docker container when it is launched. All the data from the specified Docker container folder is saved to this directory.
If you already have a directory with LP buckets you should specify it instead of
/var/lib/luna/current/example-docker/image_store/
.
Buckets creation#
Buckets are required to store data in Image Store. The Image Store service should be launched before the commands execution.
When upgrading from the previous version, it is recommended to launch the bucket creation commands one more time. Hence you make sure that all the required buckets were created.
If the "error_code":13006,"desc":"Unique constraint error","detail":"Bucket with name 'task-result' already exist"} error appears during launching of the listed above commands, the bucket is already created.
There are two ways to create buckets in LP.
Run the listed below scripts to create buckets
Run this script to create general buckets:
docker run \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/api:/srv/logs \
--rm \
--network=host \
dockerhub.visionlabs.ru/luna/luna-api:v.6.13.2 \
python3 ./base_scripts/lis_bucket_create.py -ii --luna-config http://localhost:5070/1
If you are going to use the Tasks service, use the following command to additionally create the "task-result" in the Image Store service:
docker run \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/tasks:/srv/logs \
--rm \
--network=host \
dockerhub.visionlabs.ru/luna/luna-tasks:v.3.14.2 \
python3 ./base_scripts/lis_bucket_create.py -ii --luna-config http://localhost:5070/1
If you are going to use the portraits, use the following command to additionally create the "portraits".
docker run \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/api:/srv/logs \
--rm \
--network=host \
dockerhub.visionlabs.ru/luna/luna-backport3:v.0.7.2 \
python3 ./base_scripts/lis_bucket_create.py -ii --luna-config http://localhost:5070/1
Use direct requests to create required buckets.
The curl utility is required for the following requests.
The "visionlabs-samples" bucket is used for face samples storage. The bucket is required for LP utilization.
curl -X POST http://127.0.0.1:5020/1/buckets?bucket=visionlabs-samples
The "portraits" bucket is used for portraits storage. The bucket is required for Backport 3 utilization.
curl -X POST http://127.0.0.1:5020/1/buckets?bucket=portraits
The "visionlabs-bodies-samples" bucket is used for human bodies samples storage. The bucket is required for LP utilization.
curl -X POST http://127.0.0.1:5020/1/buckets?bucket=visionlabs-bodies-samples
The "visionlabs-image-origin" bucket is used for source images storage. The bucket is required for LP utilization.
curl -X POST http://127.0.0.1:5020/1/buckets?bucket=visionlabs-image-origin
The "visionlabs-objects" bucket is used for objects storage. The bucket is required for LP utilization.
curl -X POST http://127.0.0.1:5020/1/buckets?bucket=visionlabs-objects
The "task-result" bucket for the Tasks service. Do not use it if you are not going to use the Tasks service.
curl -X POST http://127.0.0.1:5020/1/buckets?bucket=task-result
Accounts#
Admin DB transformation#
Note. Follow the steps below only if you have used the Admin service before. Otherwise, skip this section.
By default, the Accounts service creates its own luna_accounts
database, but if the Admin service was previously used, then the luna_admin
should must be transformed to work with the Accounts service. To do this, you need to change the default luna_accounts
database used by the Accounts service to luna_admin
in the Configurator and run the data migration script.
Admin DB migration#
Run migration script to update the structure of the Admin database and transform it to work with the Accounts service.
Note that after the migration, the database will be named luna_admin
, but will be used exclusively by the Accounts service.
It is recommended to create the back up of your database before applying any changes.
docker run \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/accounts:/srv/logs \
--rm \
--network=host \
dockerhub.visionlabs.ru/luna/luna-accounts:v.0.1.2 \
alembic -x luna-config=http://127.0.0.1:5070/1 upgrade head
Accounts DB tables creation#
Note. Perform the steps below only if you are launching the Accounts service for the first time and have not used the Admin service before. If you used the Admin service before, skip this section and make sure you have completed the steps in the "Admin DB transformation" section.
Use the following command to create Accounts DB tables:
docker run \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/accounts:/srv/logs \
--rm \
--network=host \
dockerhub.visionlabs.ru/luna/luna-accounts:v.0.1.2 \
python3 ./base_scripts/db_create.py --luna-config http://localhost:5070/1
Accounts container launch#
Use the following command to launch the service:
docker run \
--env=CONFIGURATOR_HOST=127.0.0.1 \
--env=CONFIGURATOR_PORT=5070 \
--env=PORT=5170 \
--env=WORKER_COUNT=1 \
--env=RELOAD_CONFIG=1 \
--env=RELOAD_CONFIG_INTERVAL=10 \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/accounts:/srv/logs \
--name=luna-accounts \
--restart=always \
--detach=true \
--network=host \
dockerhub.visionlabs.ru/luna/luna-accounts:v.0.1.2
Licenses#
Specify license server address using Configurator#
To set the license server address, follow these steps:
-
go to the Configurator service interface
http://<configurator_server_ip>:5070/
-
specify the "LICENSE_VENDOR" value in the "Setting name" field and click "Apply Filters"
-
set the IP address of the server with your HASP key in the field "server_address"
-
click "Save"
Licenses container launch#
Use the following command to launch the service:
docker run \
--env=CONFIGURATOR_HOST=127.0.0.1 \
--env=CONFIGURATOR_PORT=5070 \
--env=PORT=5120 \
--env=WORKER_COUNT=1 \
--env=RELOAD_CONFIG=1 \
--env=RELOAD_CONFIG_INTERVAL=10 \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/licenses:/srv/logs \
--name=luna-licenses \
--restart=always \
--detach=true \
--network=host \
dockerhub.visionlabs.ru/luna/luna-licenses:v.0.6.3
Faces#
Faces database migration#
You need to execute migration scripts to update your Faces database structure.
It is recommended to create the back up of your database before applying any changes.
Run the following command to perform the Faces DB migration.
docker run \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/faces:/srv/logs \
--rm \
--network=host \
dockerhub.visionlabs.ru/luna/luna-faces:v.4.8.2 \
alembic -x luna-config=http://127.0.0.1:5070/1 upgrade head
Create VLMatch function for Faces DB#
The Faces service requires the VLMatch additional function to be added to the utilized database. LUNA PLATFORM cannot perform matching calculations without this function. The VLMatch function can be added to the PostgreSQL or Oracle database.
The VLMatch library is compiled for your particular database version.
Note! Do not use the library built for another version of DB. For example, the library build for the PostgreSQL of version 12 cannot be used for the PostgreSQL of version 9.6.
This section describes the function creation for PostgreSQL.
The instruction for the Oracle DB is given in the "VLMatch for Oracle" section.
Build VLMatch for PostgreSQL#
You can find all the required files for the VLMatch user-defined extension (UDx) compilation in the following directory:
/var/lib/luna/current/extras/VLMatch/postgres/
The following instruction describes installation for PostgreSQL 12.
For VLMatch UDx function compilation one needs to:
-
Make sure, that PostgreSQL of the required version is installed and launched.
-
Install the required PostgreSQL development environment. You can find more information on the official web site.
-
The llvm-toolset-7-clang is required for postgresql12-devel. Install it from the
centos-release-scl-rh
repository.
yum -y install centos-release-scl-rh
yum -y --enablerepo=centos-sclo-rh-testing install llvm-toolset-7-clang
- Install epel-release for access to extended package repository
yum -y install epel-release
- Install the development environment.
yum -y install postgresql12 postgresql12-server postgresql12-devel
- Install the gcc-c++ package. The package version 4.8 or higher is required.
yum -y install gcc-c++.x86_64
-
Install CMAKE. The version 3.5 or higher is required.
-
Open the make.sh script using a text editor. It includes paths to the currently used PostgreSQL version. Change the following values (if necessary):
SDK_HOME
specifies the path to PostgreSQL home directory. The default value is /usr/pgsql-12/include/server
;
LIB_ROOT
specifies the path to PostgreSQL library root directory. The default value is /usr/pgsql-12/lib
.
Go to the make.sh script directory and run it:
cd /var/lib/luna/current/extras/VLMatch/postgres/
chmod +x make.sh
./make.sh
Add VLMatch function to Faces database#
The VLMatch function should be applied to the PostgreSQL DB.
- Define the function inside the Faces database:
sudo -u postgres -h 127.0.0.1 -- psql -d luna_faces -c "CREATE FUNCTION VLMatch(bytea, bytea, int) RETURNS float8 AS 'VLMatchSource.so', 'VLMatch' LANGUAGE C PARALLEL SAFE;"
- Test function by sending re following request to the service database:
sudo -u postgres -h 127.0.0.1 -- psql -d luna_faces -c "SELECT VLMatch('\x1234567890123456789012345678901234567890123456789012345678901234'::bytea, '\x0123456789012345678901234567890123456789012345678901234567890123'::bytea, 32);"
The result returned by the database must be "0.4765625".
Faces container launch#
Use the following command to launch the service:
docker run \
--env=CONFIGURATOR_HOST=127.0.0.1 \
--env=CONFIGURATOR_PORT=5070 \
--env=PORT=5030 \
--env=WORKER_COUNT=2 \
--env=RELOAD_CONFIG=1 \
--env=RELOAD_CONFIG_INTERVAL=10 \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/faces:/srv/logs \
--name=luna-faces \
--restart=always \
--detach=true \
--network=host \
dockerhub.visionlabs.ru/luna/luna-faces:v.4.8.2
Events#
Create VLMatch function for Events DB#
The Events service requires the VLMatch additional function to be added to the utilized database. LUNA PLATFORM cannot perform matching calculations without this function. The VLMatch function can be added to the PostgreSQL.
The VLMatch library is compiled for your particular database version.
Note! Do not use the library built for another version of DB. For example, the library build for the PostgreSQL of version 12 cannot be used for the PostgreSQL of version 9.6.
This section describes the function creation for PostgreSQL. If you use the PostgreSQL database, you have already created and moved the created library during the Faces service launch. See section "Build VLMatch for PostgreSQL".
Add VLMatch function to Events database#
The VLMatch function should be applied to the PostgreSQL DB.
Define the function inside the Events database:
sudo -u postgres -h 127.0.0.1 -- psql -d luna_events -c "CREATE FUNCTION VLMatch(bytea, bytea, int) RETURNS float8 AS 'VLMatchSource.so', 'VLMatch' LANGUAGE C PARALLEL SAFE;"
Test function within call:
sudo -u postgres -h 127.0.0.1 -- psql -d luna_events -c "SELECT VLMatch('\x1234567890123456789012345678901234567890123456789012345678901234'::bytea, '\x0123456789012345678901234567890123456789012345678901234567890123'::bytea, 32);"
The result returned by the database must be "0.4765625".
PostGIS installation for Events#
The Events service requires PostGIS for working with coordinates.
This instruction describes the PostGIS installation for PostgreSQL 12 database. The PostGIS version depends on the PostgreSQL version.
- Install epel-release for access to extended package repository (necessary for RabbitMQ and other dependencies)
yum -y install epel-release
- Install PostGIS:
yum -y install postgis25_12
- Activate PostGIS in your database:
sudo -u postgres -h 127.0.0.1 -- psql -d luna_events -c "CREATE EXTENSION postgis;";
See additional information about PostGIS on its website:
https://postgis.net/
Events database migration#
You need to execute migration scripts to update your Events database structure.
It is recommended to create the back up of your database before applying any changes.
docker run \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/events:/srv/logs \
--rm \
--network=host \
dockerhub.visionlabs.ru/luna/luna-events:v.4.8.2 \
alembic -x luna-config=http://127.0.0.1:5070/1 upgrade head
Events container launch#
Note. If you are not going to use the Events service, do not launch this container and disable the service utilization in Configurator. See section "Optional services usage".
Use the following command to launch the service:
docker run \
--env=CONFIGURATOR_HOST=127.0.0.1 \
--env=CONFIGURATOR_PORT=5070 \
--env=PORT=5040 \
--env=WORKER_COUNT=1 \
--env=RELOAD_CONFIG=1 \
--env=RELOAD_CONFIG_INTERVAL=10 \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/events:/srv/logs \
--name=luna-events \
--restart=always \
--detach=true \
--network=host \
dockerhub.visionlabs.ru/luna/luna-events:v.4.8.2
Python Matcher services#
For matching tasks, you can use either only the Python Matcher service, or additionally use the Python Matcher Proxy service, which redirects matching requests to either the Python Matcher service or matching plugins. This section describes how to use Python Matcher without Python Matcher Proxy.
Note. You need to use the Python Matcher Proxy service only if you are going to use matching plugins. Using Python Matcher Proxy and running the corresponding docker container are described in the "Use Python Matcher with Python Matcher Proxy" section.
See the description and usage of matching plugins in the administrator manual.
Use Python Matcher without Python Matcher Proxy#
The Python Matcher service with matching by the Faces DB is enabled by default after launching.
The Python Matcher service with matching by the Events is also enabled by default. You can disable it by specifying USE_LUNA_EVENTS = 0
in the ADDITIONAL_SERVICES_USAGE
settings of Configurator (see "Optional services usage" section). Thus, the Events service will not be used for LUNA PLATFORM.
The Python Matcher that matches using the matcher library is enabled when CACHE_ENABLED
is set to "true" in the DESCRIPTORS_CACHE
setting.
Note. A single image is downloaded for the Python Matcher service and the Python Matcher Proxy service.
Python Matcher container launch#
Use the following command to launch the service:
docker run \
--env=CONFIGURATOR_HOST=127.0.0.1 \
--env=CONFIGURATOR_PORT=5070 \
--env=PORT=5100 \
--env=WORKER_COUNT=1 \
--env=RELOAD_CONFIG=1 \
--env=RELOAD_CONFIG_INTERVAL=10 \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/python-matcher:/srv/logs \
--name=luna-python-matcher \
--restart=always \
--detach=true \
--network=host \
dockerhub.visionlabs.ru/luna/luna-python-matcher:v.1.4.2
Handlers#
Change the used database for Handlers#
The database used for the Handlers service in LUNA PLATFORM 5 is the same database that was used for the API service in LUNA PLATFORM 4.
You should change the database used for the Handlers service to the "luna_api" database in the Configurator service.
- Go to the Configurator interface (
http://<server_address>:5070
by default); - Specify the LUNA_HANDLERS_DB in the "Setting name" field of the filter and press [Apply filters] or select "luna-handlers" in the "Service name field" and find the setting there;
- Set the "db_name": "luna_api" parameter in the value field.
- Press [Save].
Handlers database migration#
You need to execute migration scripts to update your Handlers database structure.
It is recommended to create the back up of your database before applying any changes.
docker run \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/handlers:/srv/logs \
--rm \
--network=host \
dockerhub.visionlabs.ru/luna/luna-handlers:v.2.16.2 \
alembic -x luna-config=http://127.0.0.1:5070/1 upgrade head
Handlers container launch#
You can run the Handlers service utilizing CPU (set by default) or GPU.
By default, the Handlers service is launched with all estimators and detectors enabled. If necessary, you can disable the use of some estimators or detectors when launching the Handlers container. Disabling unnecessary estimators enables you to save RAM or GPU memory, since when the Handlers service launches, the possibility of performing these estimates is checked and neural networks are loaded into memory. If you disable the estimator or detector, you can also remove its neural network from the Handlers container. See the "Enable/disable several estimators and detectors" section of the administrator manual for more information.
Run the Handlers service using one of the following commands according to the utilized processing unit.
Run Handlers utilizing CPU#
Use the following command to launch the Handlers service using CPU:
docker run \
--env=CONFIGURATOR_HOST=127.0.0.1 \
--env=CONFIGURATOR_PORT=5070 \
--env=PORT=5090 \
--env=WORKER_COUNT=1 \
--env=RELOAD_CONFIG=1 \
--env=RELOAD_CONFIG_INTERVAL=10 \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/handlers:/srv/logs \
--name=luna-handlers \
--restart=always \
--detach=true \
--network=host \
dockerhub.visionlabs.ru/luna/luna-handlers:v.2.16.2
Run Handlers utilizing GPU#
The Handlers service does not utilize GPU by default. If you are going to use the GPU, then you should enable its use for the Handlers service in the Configurator service.
If you need to use the GPU for all estimators and detectors at once, then you need to use the global_device_class
parameter in the "LUNA_HANDLERS_RUNTIME_SETTINGS" section. All estimators and detectors will use the value of this parameter if the device_class
parameter of their settings like "LUNA_HANDLERS_global
(by default for all estimators and detectors).
If you need to use the GPU for a specific estimator or detector, then you need to use the device_class
parameter in sections like "LUNA_HANDLERS_
See section "Calculations using GPU" for additional requirements for GPU utilization.
Use the following command to launch the Handlers service using GPU:
docker run \
--env=CONFIGURATOR_HOST=127.0.0.1 \
--env=CONFIGURATOR_PORT=5070 \
--env=PORT=5090 \
--env=WORKER_COUNT=1 \
--env=RELOAD_CONFIG=1 \
--env=RELOAD_CONFIG_INTERVAL=10 \
--gpus device=0 \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/handlers:/srv/logs \
--name=luna-handlers \
--restart=always \
--detach=true \
--network=host \
dockerhub.visionlabs.ru/luna/luna-handlers:v.2.16.2
--gpus device=0
- the parameter specifies the used GPU device and enables GPU utilization. A single GPU can be utilized per Handlers instance. Multiple GPU utilization per instance is not available.
Tasks#
Note. If you are not going to use the Tasks service, do not launch the Tasks container and the Tasks Worker container. Disable the service utilization in Configurator. See section "Optional services usage".
Tasks database migration#
You need to execute migration scripts to update your Tasks database structure.
It is recommended to create the back up of your database before applying any changes.
docker run \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/tasks:/srv/logs \
--rm \
--network=host \
dockerhub.visionlabs.ru/luna/luna-tasks:v.3.14.2 \
alembic -x luna-config=http://127.0.0.1:5070/1 upgrade head
Tasks and Tasks worker containers launch#
Luna Tasks Docker image includes the Tasks service and the Tasks worker. They both must be launched.
The "task-result" bucket should be created for the Tasks service before the service launch. The buckets creation is described in the "Buckets creation".
If it is necessary to use the Estimator task using a network disk, then you should first mount the directory with images from the network disk into special directories of Tasks and Tasks Worker containers. See the "Estimator task" section in the administrator manual for details.
Tasks Worker launch#
Use the following command to launch the service:
docker run \
--env=CONFIGURATOR_HOST=127.0.0.1 \
--env=CONFIGURATOR_PORT=5070 \
--env=PORT=5051 \
--env=WORKER_COUNT=1 \
--env=RELOAD_CONFIG=1 \
--env=RELOAD_CONFIG_INTERVAL=10 \
--env=SERVICE_TYPE="tasks_worker" \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/tasks-worker:/srv/logs \
--name=luna-tasks-worker \
--restart=always \
--detach=true \
--network=host \
dockerhub.visionlabs.ru/luna/luna-tasks:v.3.14.2
Tasks launch#
Use the following command to launch the service:
docker run \
--env=CONFIGURATOR_HOST=127.0.0.1 \
--env=CONFIGURATOR_PORT=5070 \
--env=PORT=5050 \
--env=WORKER_COUNT=1 \
--env=RELOAD_CONFIG=1 \
--env=RELOAD_CONFIG_INTERVAL=10 \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/tasks:/srv/logs \
--name=luna-tasks \
--restart=always \
--detach=true \
--network=host \
dockerhub.visionlabs.ru/luna/luna-tasks:v.3.14.2
Sender#
Sender container launch#
Note. If you are not going to use the Sender service, do not launch this container and disable the service utilization in Configurator. See section "Optional services usage".
Use the following command to launch the service:
docker run \
--env=CONFIGURATOR_HOST=127.0.0.1 \
--env=CONFIGURATOR_PORT=5070 \
--env=PORT=5080 \
--env=WORKER_COUNT=1 \
--env=RELOAD_CONFIG=1 \
--env=RELOAD_CONFIG_INTERVAL=10 \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/sender:/srv/logs \
--name=luna-sender \
--restart=always \
--detach=true \
--network=host \
dockerhub.visionlabs.ru/luna/luna-sender:v.2.6.2
API#
API container launch#
Use the following command to launch the service:
docker run \
--env=CONFIGURATOR_HOST=127.0.0.1 \
--env=CONFIGURATOR_PORT=5070 \
--env=PORT=5000 \
--env=WORKER_COUNT=1 \
--env=RELOAD_CONFIG=1 \
--env=RELOAD_CONFIG_INTERVAL=10 \
--name=luna-api \
--restart=always \
--detach=true \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/api:/srv/logs \
--network=host \
dockerhub.visionlabs.ru/luna/luna-api:v.6.13.2
Account creation using API service#
The account is created using an HTTP request to the "create account" resource of the API service.
You can also create an account using the Admin service. This method requires an existing login and password (or the default login and password) and enables you to create an "admin" account. See the "Admin service" section of the administrator manual for details.
To create the account using a request to the API service, you need to provide the following mandatory data:
- login — email address
- password — password
- account_type — account type ("user" or "advanced_user")
Create the account using your authentication details.
If you want to keep the ability to use the "account_id" that was used as the "Luna-Account-Id" header in previous LP versions (without creating an account in the Admin service), then you need to link the old "account_id" to the account being created.
Example of CURL-request to the "create account" resource:
curl --location --request POST 'http://127.0.0.1:5000/6/accounts' \
--header 'Content-Type: application/json' \
--header 'Luna-Account-Id: <your_old_account_id>' \
--data '{
"login": "user@mail.com",
"password": "password",
"account_type": "user",
"description": "description"
}'
It is necessary to replace the authentication data from the example with your own.
To work with tokens, you must have an account.
Admin#
Admin container launch#
Note. If you are not going to use the Admin service, do not launch this container.
Use the following command to launch the service:
docker run \
--env=CONFIGURATOR_HOST=127.0.0.1 \
--env=CONFIGURATOR_PORT=5070 \
--env=PORT=5010 \
--env=WORKER_COUNT=1 \
--env=RELOAD_CONFIG=1 \
--env=RELOAD_CONFIG_INTERVAL=10 \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/admin:/srv/logs \
--name=luna-admin \
--restart=always \
--detach=true \
--network=host \
dockerhub.visionlabs.ru/luna/luna-admin:v.5.1.3
Monitoring data about the number of executed requests is saved in the luna-admin bucket of the InfluxDB. To enable data saving use the following command:
docker exec -it luna-admin python3 ./base_scripts/influx2_cli.py create_usage_task --luna-config http://127.0.0.1:5070/1
Backport 4#
The section describes launching of Backport 4 service.
Note. The service is not mandatory for utilizing LP5 and is required for emulation of LP 4 API only.
Backport 4 container launch#
Use the following command to launch the service:
docker run \
--env=CONFIGURATOR_HOST=127.0.0.1 \
--env=CONFIGURATOR_PORT=5070 \
--env=PORT=5130 \
--env=WORKER_COUNT=1 \
--env=RELOAD_CONFIG=1 \
--env=RELOAD_CONFIG_INTERVAL=10 \
--name=luna-backport4 \
--restart=always \
--detach=true \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/backport4:/srv/logs \
--network=host \
dockerhub.visionlabs.ru/luna/luna-backport4:v.1.3.2
User Interface 4#
The User Interface 4 is used with the Backport 4 service only.
User Interface 4 container launch#
Note. You should have the account with account type user before launching the User Interface 4 container. Its login and password in Base64 format will be used to work with the user interface.
Use the following command to launch the service:
docker run \
--env=PORT=4200 \
--env=LUNA_API_URL=http://<server_external_ip>:5130 \
--env=BASIC_AUTH=dXNlckBtYWlsLmNvbTpwYXNzd29yZA== \
--name=luna-ui-4 \
--restart=always \
--detach=true \
--network=host \
-v /etc/localtime:/etc/localtime:ro \
dockerhub.visionlabs.ru/luna/luna4-ui:v.0.1.1
--env=PORT
- specifies the port for running User Interface 4.
--env=BASIC_AUTH
- sets the Basic authorization for the account which data is displayed in the user interface. It is necessary to convert login:password
created at the stage "Account creation using API service" to Base64 format. The account type should be set to user.
--env=LUNA_API_URL
- specifies the URL of the Backport 4 service.
-
You should use the external IP of the service, not localhost.
-
You should specify the Backport 4 service port (5130 is set by default).