Applications Setup - epam/acuity GitHub Wiki
We run ACUITY system mostly in containerized form, and this article describes containerized ACUITY deployment. There may be differencies between images in use (depending on the configuration):
- VAHub image (required in any case)
- AdminUI image (required in any case)
- ACUITY Spring Cloud configuration server image (required in any non-development case)
- VASecurity image (required in any non-development case)
- Apache HTTP server image (required in any non-development case)
- PostgreSQL image (required if you plan to use containerized database rather than deployed externally; recommended)
- Flyway image (required if you plan to use containerized database rather than deployed externally; recommended)
Here is a scheme how all repositories fit together:

Github Actions build docker images from source code on change and store them in Github container registries. After that you use acuity-docker and acuity-deployment-scripts repository to install ACUITY
either locally or in Cloud.
- a running host machine (OS may be Windows- or Unix-like, it only should be able to run Docker daemon; from now on, this instruction considers Linux Ubuntu distribution, but you may use another OS as well)
- an SSL certificate (if you don't have one, please see here; anyway, you need to have
ca.crtandca.keyfiles)b - if you plan to use some Microsoft Azure features (it may be user authentication with Azure AD, virtual machines, file storage in a storage account etc), you need an Azure account with corresponding privileges and configured items; please read this article to find out how to prepare them.
To quickly install application please refer to repository with deployment scripts .Below you are going to find some manual instructions which are already implemented in scripts
For Windows:
- depending on your Windows installation you may need to install Hyper-V, WSL and/or WSL2 (see here for details)
- install and update some Linux distribution onto your Windows (e.g. Ubuntu 22.04.2 from Microsoft Store will be OK)
- install Docker with the
sudo apt install docker.io -ycommand
For Ubuntu: Please use sh. script in repository
For other OS: please see Docker installation documentation.
You could create docker images using source code or pull them from ghcr.io as well. There are convenience scripts which start application for given environment by pulling images
Before running ACUITY, you may want to configure it to change some details. There are several kinds of configs placed in different subdirectories of acuity-docker:
- Spring configuration files (
acuity-spring-configssubdirectory); you may have an already prepared set of configs you deploy ACUITY applications onto some old-versioned ACUITY environment - if it's the case, just replace the content ofacuity-spring-configsdirectory with these files (but pay attention to possible document structure changes). Otherwise, you may update existing config template files as you want. Full description can be found here. Most likely you'll need to update main work DB user password (see below), various Azure-related options (read this for details) and some external services links. - Docker Compose environment variables config (
env-configssubdirectory). For environments of ACUITY applications, these configs contain Java command line variables the application should run with. Default values are suitable for basic work, but in some cases you may want to raise heap size, e.g. There is alsopostres.envconfig that contains the newly created database superuser username and password, service database (non-business) name and port; you'll probably need to change at least the password. - Flyway image config (
images/flyway/flyway.conf) - here the DB superuser username and password should be updated if they were updated inpostgres.env. Also, you'll probably need to update the password for main work DB user (flyway.placeholders.user.acuity.password) - that's the one that should be used in Spring configuration files. -
.envfile (in the rootacuity-dockerdirectory) - it is the Docker Compose environment file. Here it contains names of Spring profiles that will be used when running ACUITY; by default, all is configured for a production environment. More details about profiles can be found inside this file comments and in Porfiles section
- copy
acuity-dockerproject content to your user directory subdirectoryacuity-docker; you need to copy following directories and files:env-configsimagesacuity-spring-configs-
.env(if you plan to use this ACUITY instance for production purposes) or.env.dev(for development, demo and similar purposes) - it's your .env file -
docker-compose.yml(if you plan to use regular mode, e.g. take ACUITY applications Docker images from a remote registry or imported ones) ordocker-compose_building-mode.yml(if you plan to use building mode, e.g. build automatically you images by yourself before use them) - it's your Docker Compose file
- get to
~/acuity-dockerdirectory using our command line tool (from here, all paths will be relative to this directory, unless mentioned different) - if you have a set of predefined config files for your environment (that may be Spring configs, or
.envconfig(s), or<app>.envconfigs etc), place them to~/acuity-dockerdirectory or corresponding subdirectories; most likely, you'll be able just to copy all the content of your prepared config directory to the~/acuity-dockerdir. - put your SSL certificate files to the
~/acuity-docker/ssl-certificates/certs/(ca.crtfile) and~/acuity-docker/ssl-certificates/keys(ca.keyfile) directories. - if you a going to use default-state configs, make sure they are suitable for your purposes, and update them if needed; in particular, pay attention to the content of the
.env/.env.devfile (there are some comments inside that describe what can be changed and why). - if you have a data dump in
.sqlortarformat to upload to the new database, place it to/images/postgres/datadirectory; otherwise, update/images/postgres/data/add_global_admin.sqlfile setting everywhere global admin email instead of[email protected]. - if you decided to use building mode, you need built artifacts of ACUITY applications; place them into
/building-mode/buildsdirectory under names:adminui.war,acuity-config-server.war,acuity-flyway.jar,vasecurity.war,vahub.war. - run
docker-compose -f <your_docker-compose_file>.yml --env-file <your_.env_file> --profile init_db up -dand waitacuity-flywaycontainer to finish its work and exit (it will take a couple of minutes; to make sure it exited, rundocker container ls --all; in the list of containers you should see something likeacuity-flyway:8.0-lithium-SNAPSHOTin stateExited) - run
docker exec -i -t acuity-docker_postgres_1 /bin/bash - if you want to apply a DB dump in
.sqlformat generated byacuity-data-oracle-to-pg-transformerutility, run the following commands:
psql -d acuity_db -U dbadmin
\i /usr/root/data/<your_dump_file>.sql
\q- if you want to apply a DB dump in
.tarformat, run the following commands:
psql -d acuity_db -U dbadmin
\i /usr/root/data/clear_data_tables.sql
\q
pg_restore --host=localhost --port=5432 --username=dbadmin --dbname=acuity_db --schema=acuity --data-only --disable-triggers --format=t /usr/root/data/<your_dump_file>.tar
psql -d acuity_db -U dbadmin
\i /usr/root/data/update_sequences.sql
\q- if you want to just add the global administrator user (without it, you won't be able to operate clear ACUITY instance), run the following commands:
psql -d acuity_db -U dbadmin
\i /usr/root/data/add_global_admin.sql
\q- run
exit - run
docker-compose -f <your_docker-compose_file>.yml down - run
docker-compose -f <your_docker-compose_file>.yml --env-file <your_.env_file> --profile main up -dWait for ACUITY applications to start (you may check it using logs in/logsdirectory). After that, they should be accessible through ports 80/443 (VAHub), 444 (VASecurity), 447 (AdminUI) on your environment (if you do it on your local machine, addresses will look likehttps://localhost:447).