VTOM Bac à sable - docker compose
First things first, installation Docker. Moi, perso, ça sera sous Windows en WSL.
Télécharger docker.visual-tom-core
Demander à Absyss un token de download des sources et télécharger : docker.visual-tom-core-7.2.1e.zip
Importer l’image dans docker
Déziper le fichier d’Absyss. Il y a l’image à l’intérieur core.tar.gz
docker load -i .\docker.visual-tom-core-7.2.1e\visual-tom-core-7.2.1e.tar.gz
Loaded image: absyss/visual-tom-core:7.2.1e
docker tag 3e2d5a26df07 absyss/visual-tom-core:latest
docker images | findstr absyss
absyss/visual-tom-core latest 3e2d5a26df07 2 months ago 2.31GB
absyss/visual-tom-core 7.2.1b 10709941e0a7 7 months ago 2.24GB
absyss/visual-tom-core 7.2.1e 3e2d5a26df07 2 months ago 2.31GB
entrypoint et architecture du persistent volume
Le docker-entrypoint.sh
(l’entrypoint de l’image docker) va créer des dossiers persistents (si non existants) dans /var/lib/absyss/visual-tom
et faire des liens symboliques vers les “vrais” paths $TOM_HOME, ou copier parfois des fichiers etc. ci-après le détails
tips : pour le docker desktop windows, en wsl, le répertoire du volume est accessible (le chemin peut être différent selon les noms, mais ça donne une idée) : \\wsl.localhost\docker-desktop\mnt\docker-desktop-disk\data\docker\volumes\visual-tom_customer-data\_data
/var/lib/absyss/visual-tom
../scripts : pour les scripts
../backup : pour les vtbackup, ln -s "$TOM_CUSTOMER_DATA/backup" "$TOM_HOME/backup"
../export : pour les vtexport, ln -s "$TOM_CUSTOMER_DATA/export" "$TOM_HOME/export"
../keys : clé priv, pub, ln -s "$TOM_CUSTOMER_DATA/keys" "$TOM_HOME/keys"
../data : répertoire $TOM_BASES car ln -s "$TOM_CUSTOMER_DATA/data" "$TOM_HOME/bases"
../abm : copie config et queues client vtom (agent) vers abm/config
../conf : selon présence, docker-entrypoint.sh va soit copier les fichiers de conf par défaut ici, soit des fois utiliser les fichiers présents dans conf/, ou lien symbolique
conf/.vtom.ini :
si absent, cp "$TOM_HOME/admin/.vtom.ini" "$TOM_CUSTOMER_DATA/conf/.vtom.ini"
export TOM_INI_PATH=$TOM_CUSTOMER_DATA/conf
à rajouter, le vtserver a besoin du vtapiserver notamment pour résoudre les fonctions, comme dans docker-compose le server et apiserver sont séparés, il faut le préciser (pas localhost) :
[vtapiserver]
hostname=apiserver
port=30002
conf/VtomApiServer.ini : si présent, ln -s "$TOM_CUSTOMER_DATA/conf/VtomApiServer.ini" "$TOM_HOME/vtom/bin/VtomApiServer.ini"
conf/VtomApiServer.jks : si présent, ln -s "$TOM_CUSTOMER_DATA/conf/VtomApiServer.jks" "$TOM_HOME/vtom/bin/VtomApiServer.jks"
conf/server.crt : si présent, copié dans $TOM_HOME, sinon créé à chaque fois
tips : si jamais vous le faites vous avec votre serveur pki, il faut concat le crt et le key
attention, il faut le même sur tous les serveurs + clients si jamais
openssl req -new -x509 -days 1095 -nodes -text -out "${TOM_HOME}/server.crt" -keyout "${TOM_HOME}/server.key" -subj "/CN=Absyss Visual TOM"
cat "${TOM_HOME}/server.key" >> "${TOM_HOME}/server.crt"
conf/ldapcheck.ini : si présent, ln -s "$TOM_CUSTOMER_DATA/conf/ldapcheck.ini" "$TOM_HOME/vtom/bin/ldapcheck.ini"
../traces : si présent, ln -s "$TOM_CUSTOMER_DATA/traces" "${TOM_HOME}/traces"
../logs : logs agent, ln -s "$TOM_CUSTOMER_DATA/logs" "$TOM_HOME/logs"
Répertoire de travail
Dans votre répertoire de travail, vous aurez besoin de :
docker-compose.yml
x-env-variables: &env-variables
TZ: Europe/Paris
TOM_SERVER_HOST: server
TOM_PORT_tomDBd: ${TOM_PORT_tomDBd:-30001}
TOM_PORT_vtserver: ${TOM_PORT_vtserver:-30007}
TOM_PORT_svtserver: ${TOM_PORT_svtserver:-30017}
TOM_PORT_vtnotifier: ${TOM_PORT_vtnotifier:-30008}
TOM_PORT_svtnotifier: ${TOM_PORT_svtnotifier:-30018}
TOM_PORT_vtapiserver: ${TOM_PORT_vtapiserver:-30002}
TOM_PORT_bdaemon: ${TOM_PORT_bdaemon:-30004}
TOM_PORT_sbdaemon: ${TOM_PORT_sbdaemon:-30014}
TOM_SGBD_HOST: db
TOM_SGBD_PORT: ${TOM_SGBD_PORT:-30009}
TOM_SGBD_DBNAME: vtom
TOM_SGBD_USER: vtom
x-service-base: &base-service
image: ${DOCKER_IMAGE_NAME:-absyss/visual-tom-core}:${DOCKER_IMAGE_VERSION:-latest}
ulimits:
nofile:
soft: 65536
hard: 65536
memlock:
soft: -1
hard: -1
services:
agent:
<<: *base-service
environment:
<<: *env-variables
command: agent
volumes:
- customer-data:/var/lib/absyss/visual-tom
# Uncomment to expose agent service
#ports:
# - "${TOM_PORT_bdaemon:-30004}:${TOM_PORT_bdaemon:-30004}"
# - "${TOM_PORT_sbdaemon:-30014}:${TOM_PORT_sbdaemon:-30014}"
restart: unless-stopped
server:
<<: *base-service
environment:
<<: *env-variables
command: server
volumes:
- customer-data:/var/lib/absyss/visual-tom
- type: bind
source: ./license.xml
target: /opt/absyss/visual-tom/vtom/bin/license.xml
- type: bind
source: ./.vtom.ini
target: /var/lib/absyss/visual-tom/conf/.vtom.ini
ports:
- "${TOM_PORT_tomDBd:-30001}:${TOM_PORT_tomDBd:-30001}"
- "${TOM_PORT_vtserver:-30007}:${TOM_PORT_vtserver:-30007}"
- "${TOM_PORT_vtnotifier:-30008}:${TOM_PORT_vtnotifier:-30008}"
- "${TOM_PORT_svtserver:-30017}:${TOM_PORT_svtserver:-30017}"
- "${TOM_PORT_svtnotifier:-30018}:${TOM_PORT_svtnotifier:-30018}"
depends_on:
- db
restart: unless-stopped
db:
<<: *base-service
environment:
<<: *env-variables
command: db
volumes:
- customer-data:/var/lib/absyss/visual-tom
# Uncomment to expose db service
#ports:
# - "${TOM_SGBD_PORT:-30009}:${TOM_SGBD_PORT:-30009}"
restart: unless-stopped
apiserver:
<<: *base-service
environment:
<<: *env-variables
command: apiserver
volumes:
- customer-data:/var/lib/absyss/visual-tom
ports:
- "${TOM_PORT_vtapiserver:-30002}:${TOM_PORT_vtapiserver:-30002}"
depends_on:
- db
- server
restart: unless-stopped
volumes:
customer-data:
# NFS example
# driver_opts:
# type: "nfs"
# o: "addr=10.10.10.10,nolock,soft,rw"
# device: ":/vtom/data"
# External example
external: true
name: visual-tom_customer-data
les différents “types” de container : agent, server, apiserver, db, shell (ce sont les options de l’entrypoint de l’image docker)
Vous pouvez vous connecter dans les containers : docker compose exec server bash
Tips : si vous faites un exec sur la db, pensez à export LD_LIBRARY_PATH=${TOM_HOME}/sgbd/lib
pour pouvoir ${TOM_HOME}/sgbd/bin/psql -Uvtom -dvtom -p30009
Le fichier .vtom.ini
(exemple) :
[GLOBALES]
nbWaitRetry=2
StatusFailSubmit=AVENIR
StatusFailExist=ENCOURS
[VTSERVER]
TRACE_LEVEL=1
TRACE_FILE=/var/lib/absyss/visual-tom/traces/vtserver.log
TRACE_FILE_SIZE=10
TRACE_FILE_COUNT=10
[TENGINE:Exploitation]
TRACE_LEVEL=1
TRACE_FILE=/var/lib/absyss/visual-tom/traces/Exploitation.log
TRACE_FILE_SIZE=10
TRACE_FILE_COUNT=10
timeBexist=30
[job]
tagScript=#
[vtapiserver]
hostname=apiserver
port=30002
Votre fichier license.xml
Lancer le déploiement
soit passer par le terminal, soit par l’interface graphique du Docker Desktop.
docker compose up -d
Accès
Accès au client léger : https://localhost:30002/xvision/
Quand vous créez l’agent docker dans le référentiel vtom, il faut mettre le nom que vous avez mis dans le docker-compose.
Moi c’est agent