Доставка разработанного сервиса бизнес-логики в Платформу
Сервис бизнес-логики запускается и работает в Docker-контейнере. Более подробную информацию о работе с Docker и использовании приложения .NET в Docker-контейнерах см. на сайте Microsoft.
Убедитесь, что следующие действия выполнены:
- сервис зарегистрирован;
- сервис настроен;
- клиенты и API-ресурсы межсервисного взаимодействия созданы;
- секреты клиентов для клиентов межсервисного взаимодействия созданы;
- файлы конфигурации
appsettings.json
иappsettings.Development.json
удалены.
Чтобы доставить сервис бизнес-логики в Платформу:
-
В Visual Studio cоберите проект в конфигурации Release для последующей упаковки в образ Docker-контейнера, как показано в следующем блоке кода.
dotnet restore
dotnet publish -c Release --self-contained --runtime linux-musl-x64 -o output/ -
Соберите Docker-образ.
Создайте DockerFile с точкой входа, соответствующей выбранному вами базовому образу или поставляемому базовому образу. Следующий пример подразумевает использование поставляемого базового образа.
-
В папке
output/
создайте DockerFile со следующим содержимым:FROM distrib/infra/base-dotnet8-runtime:alpine-x86_64-3.19.1-167
WORKDIR /app
ADD . .
ENTRYPOINT ["/app/SERVICE_NAME"]В качестве SERVICE_NAME укажите имя исполняемого файла сервиса без расширения.
-
Соберите образ Docker-контейнера с помощью команды
docker build
, как показано в следующем примере:docker build -f Dockerfile -t <TAG> .
-
-
Создайте Docker-репозиторий и поместите в него Docker-образ с помощью команды
docker push
, как показано в следующем примере:docker push -t <TAG>
-
На сервере с установленной Платформой создайте 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" \
<