Один из вариантов развертывания модуля Artix Virtual Pos (VPOS) – установка через docker-контейнер.

Установка docker

В качестве примера для установки docker выбрана ОС Ubuntu 22.04.

Для установки docker необходимо:

  1. Установить Docker Engine, выполнив команды:

    sudo apt-get remove docker docker-engine docker.io containerd runc
    sudo apt-get update
    sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
    sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
    sudo apt-get update
    sudo apt-get install docker-ce
  2. Получить сертификат для доступа к хранилищу docker-образов, выполнив команду:

    curl -fsSL http://downloads.artix.su/static/downloads/docker/vpos_env/import_docker_cert.sh | sudo /bin/bash - && ls -1 /etc/docker/certs.d/*/*

    Для замены просроченного сертификата скачать и запустить скрипт http://downloads.artix.su/static/downloads/docker/vpos_env/change_trusted_docker_cert.sh, выполнив команду:

    wget -qO- http://downloads.artix.su/static/downloads/docker/vpos_env/change_trusted_docker_cert.sh | bash

    В директории /etc/docker/certs.d/dockerregistry.artix.su:2443 будут размещены файлы сертификата:

    • ca.crt,
    • client.cert,
    • client.key.
  3. Перезапустить docker, выполнив команду:

    sudo service docker restart
  4. Посмотреть версии VPOS доступные для скачивания, выполнив команды:

    cd /etc/docker/certs.d/dockerregistry.artix.su\:2443/
    curl --cacert ./ca.crt --key ./client.key --cert ./client.cert https://dockerregistry.artix.su:2443/v2/artix-vpos/tags/list
  5. Скачать VPOS, выполнив команду:

    В команде необходимо указать версию VPOS, для которой необходимо создать docker-контейнер.
    docker pull dockerregistry.artix.su:2443/artix-vpos:artix-4.6.238-5

Запуск Artix Virtual Pos

Запуск VPOS из контейнера производится выполнением команды вида:

Пример настройки
docker run --restart=always -p8090:8090 -p7795:7795 \
--mount src=mysql_vpos1,dst=/linuxcash/cash/data/mysql \
--mount src=conf_vpos1,dst=/linuxcash/cash/conf \
--mount src=qpid_vpos1,dst=/var/spool/qpid \
--mount src=puppet_ssl_vpos1,dst=/var/lib/puppet/ssl \
-ePUPPET_SERVER_NAME="srv-saas-demo.dmz" -ePUPPET_SERVER_IP="localhost" \
-eCASH_SHOP_CODE=100 -eCASH_CASH_CODE=10 \
-eSTART_SERVICES="qpid sync nes mysql vpos" \
-eMYSQLSERVER_SERVERDB="false" \
-eMYSQLSERVER_HOST="localhost" \
-eMYSQLSERVER_PORT="3306" \
-eMYSQLSERVER_USER="root" \
-eMYSQLSERVER_PASSWORD="" \
-eCATALOGFACTORY_DBNAME="dictionariesAll" \
-eDISCOUNT_DBNAME="dictionariesAll" \
-d --hostname vpos-docker-100-10 --name vpos1 \
-ti dockerregistry.artix.su:2443/artix-vpos:artix-4.6.238-5

Работа с docker-контейнером VPOS

Команда docker с опцией run запускает новый контейнер:

  • опция --restart=always гарантирует, что контейнер всегда перезагружается демоном docker, если по какой-то причине он останавливается.
  • опция --mount отвечает за монтирование данных между хостовой машиной и docker-контейнером. Состоит из нескольких пар ключ-значение, разделенных запятыми. В параметре src передается источник монтирования, в параметре dst - путь, в котором файл или каталог монтируется в контейнере.
  • опция --hostname задает имя хоста.
  • опция --name задает имя машины, которая работает в docker-контейнере.
  • опция -p8090:8090 предназначена для проброса портов в docker-контейнер. Для работы кассового сервера также должен быть обязательно проброшен порт 7795. Порт 8090 по умолчанию используется для взаимодействия между сервисом интернет-магазина и VPOS.

Просмотр точек монтирования осуществляется при выполнении команды:

docker volume ls

Подключение к VPOS для управления выполняется командой:

docker exec -ti vpos1 bash

Для удаления контейнера с VPOS необходимо остановить ее и выполнить команду удаления:

docker stop vpos1
docker rm vpos1

Переменные окружения

Работа с кассой

  • CASH_SHOP_CODE=1 – код кассы, который будет установлен в cash.reg.
  • CASH_CASH_CODE=1 – код магазина, который будет установлен в cash.reg.
  • CASH_SHIFT_NUMBER=1 – номер смены, который будет установлен в cash.reg.
  • CASH_CHECK_NUMBER=1 – номер чека, который будет установлен в cash.reg.
  • CASH_SHIFT_BEG="2017-11-27T17:29:21" – время начала смены, которое будет установлено в cash.reg.
  • START_SERVICES="qpid sync nes mysql vpos" – список сервисов, которые запустятся после старта контейнера. Для корректного функционирования VPOS, необходимы:
    • sync – отвечает за попадание справочников на кассу, касса должна подхватиться КС по ip-адресу,

    • qpid – очереди обмена,

    • mysql – хранилище БД, используется как обменом, так и кассой,

    • nes – сервис обмена,

    • vpos – сервис VPOS, после инициализации доступен на порту 8090,

    • executor – сервис, который может запускать скрипт, с определенной периодичностью, непосредственно внутри контейнера.

  • SET_TIMEZONE="Asia/Krasnoyarsk" – часовая зона, в которой предполагается работа VPOS.
  • PUPPET_SERVER_NAME="puppet" – доменное имя puppet-сервера, с которого VPOS будет скачивать конфигурацию.
  • PUPPET_SERVER_IP="" – IP-адрес puppet-сервера, если будет указан, в файл /etc/hosts кассы будет помещена запись для связки PUPPET_SERVER_NAME и PUPPET_SERVER_IP.
  • COMMAND_URI="http://localhost/command" – путь до команды, которую необходимо выполнять в executor, выкачивается по curl -f "$COMMAND_URI".
  • COMMAND_TIMEOUT=10 – время на выполнение команды сервисом executor. Если выполнение команды затрачивает больше времени, то ее выполнение прекращается командой kill.
  • COMMAND_SLEEP=5 – ожидание между повторами выполнения команды сервисом executor.

Работа с удаленной БД

  • MYSQLSERVER_SERVERDB – нужно ли использовать БД кассового сервера. По умолчанию false.
  • MYSQLSERVER_HOST – хост удаленной базы данных. По умолчанию localhost.
  • MYSQLSERVER_PORT – порт удаленной базы данных. По умолчанию 3306.
  • MYSQLSERVER_USER – имя пользователя для доступа к удаленной базы данных. По умолчанию root.
  • MYSQLSERVER_PASSWORD – пароль для доступа к удаленной базы данных. По умолчанию "".
  • CATALOGFACTORY_DBNAME – название базы данных каталогов. По умолчанию "dictionariesAll".
  • DISCOUNT_DBNAME – название базы данных скидок. По умолчанию "dictionariesAll".

Подключение к удаленному кассовому серверу

Настройка подключения VPOS к удаленному кассовому серверу осуществляется в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/vpos.ini. Для этого необходимо задать параметры csPort, csUser, csPassword.

  • No labels