Перейти к основному содержимому

Доставка разработанного сервиса бизнес-логики в Платформу

Сервис бизнес-логики запускается и работает в Docker-контейнере. Более подробную информацию о работе с Docker и использовании приложения .NET в Docker-контейнерах см. на сайте Microsoft.

Убедитесь, что следующие действия выполнены:

Чтобы доставить сервис бизнес-логики в Платформу:

  1. В Visual Studio cоберите проект в конфигурации Release для последующей упаковки в образ Docker-контейнера, как показано в следующем блоке кода.

    dotnet restore
    dotnet publish -c Release --self-contained --runtime linux-musl-x64 -o output/
  2. Соберите Docker-образ.

    Создайте DockerFile с точкой входа, соответствующей выбранному вами базовому образу или поставляемому базовому образу. Следующий пример подразумевает использование поставляемого базового образа.

    1. В папке output/ создайте DockerFile со следующим содержимым:

      FROM distrib/infra/base-dotnet8-runtime:alpine-x86_64-3.19.1-167
      WORKDIR /app
      ADD . .
      ENTRYPOINT ["/app/SERVICE_NAME"]

      В качестве SERVICE_NAME укажите имя исполняемого файла сервиса без расширения.

    2. Соберите образ Docker-контейнера с помощью команды docker build, как показано в следующем примере:

      docker build -f Dockerfile -t <TAG> .
  3. Создайте Docker-репозиторий и поместите в него Docker-образ с помощью команды docker push, как показано в следующем примере:

    docker push -t <TAG>
  4. На сервере с установленной Платформой создайте Docker-контейнер с помощью команды docker run, как показано в следующем примере:

    docker run -d \
    --name <SERVICE_NAME> \
    --ip <внутренний IP-адрес контейнера в сети pmd-network. Уточните свободный адрес у владельца стенда> \
    --network pmd-network \
    --restart always \
    -e ApiConfiguration__ClientSecrets__0__ClientId="<Имя первого клиента identity>" \
    -e ApiConfiguration__ClientSecrets__0__Secret="<секрет первого клиента межсервисного взаимодействия>" \
    <Повторите предыдущие две строки для всех клиентов межсервисного взаимодействия разработанного сервиса> \
    -e ConfigServer="<по умолчанию https://proxy.pmd.local, уточните у владельца стенда>" \
    -e identityConfiguration__identityServiceUrl="https://<FQDN стенда>/identity" \
    -e nginx__configurationEndpoint="https://<по умолчанию https://proxy.pmd.local, уточните у владельца стенда>/api/dups/configure/get" \
    -e Kafka__Server: "<FQDN сервера kafka, по умолчанию kafka.pmd.local>:<Порт kafka, по умолчанию 9094>" \
    -e Kafka__AuditProducerTopic: "<Имя стенда>-Audit" \
    <Задайте другие переменные разработанного сервиса> \
    -v /opt/docker-conts/internal-certs/certificate.pem:/cert/certificate.pem \
    -v /opt/docker-conts/internal-certs/certificate.key.pem:/cert/certificate.key.pem \
    -v /opt/docker-conts/internal-certs/root.crt:/etc/ssl/certs/internal-root.crt \
    -v /opt/docker-conts/external-certs/CA-stand.pem:/etc/ssl/certs/CA-stand.crt \
    <TAG из пункта 2 этой инструкции>

Docker-контейнер с разработанным сервисом бизнес-логики запустится и отобразится с одним активным узлом в разделе Services AdminTools.