.dockerignore keeps .git/ out of the build context, so the in-container
publish had no repository and AssemblyInformationalVersion (service.version,
VersionInfo) was a bare 1.0.0. docker/build.sh (used by docker/deploy.sh and
docker-env2/deploy.sh) now passes git rev-parse HEAD, suffixed -dirty for an
uncommitted tree, and the Dockerfile hands it to dotnet publish as
SourceRevisionId. Without the arg the build still succeeds as 1.0.0. The ARG
sits after the source COPY so a new commit does not bust the restore layer.
Claude-Session: https://claude.ai/code/session_01GT67ACmpMR7b9LGRPLijMi
- DeploymentManagerActor.HandleDeployArtifacts read the Self property inside its
Task.Run lambda (line dispatching ApplyArtifactDataConnectionsToDcl). Self is
backed by the ambient ActorCell, null on a thread-pool thread, so it threw
'no active ActorContext' — surfaced the first time a data connection is
deployed via deploy-artifacts. Capture Self into a local first (as Sender
already was).
- seed-sites.sh: create a shared MxGateway data connection (10.100.0.48:5120)
on each site and deploy artifacts so the DCL establishes them.
- build.sh: nounset-safe empty-array expansion (bash 3.2).
Dockerfile copies nuget.config (so the Gitea feed + source mapping are known in
the restore stage) and accepts optional NUGET_GITEA_USER/PASS build-args for a
private feed; build.sh forwards them from host env vars (MXGW_NUGET_USER/PASS)
so secrets are never committed. Verified the in-container restore resolves the
ZB.MOM.WW.MxGateway.* packages (anonymous feed).
Multi-stage Dockerfile with NuGet restore layer caching, per-node appsettings
with Docker hostnames, shared bridge network with infra services, and
build/deploy/teardown scripts. Ports use 90xx block to avoid conflicts.