1

I'm trying to dockerize my ArcMap-application, which is written using ArcObjects for Desktop. The reason to do that is, we have a huge code-base that we want to test automatically as much as possible using unit-tests on our build-pipeline.

So I decided to run all those tests in parallel and to isolate the tests from one another. So every test gets its own database, its own configuration and so on (okay, actually this isn't unit-testing, but integration-testing). I thought about virtual maschines, but those are expensive and way too huge, in particular as I would replicate the entire OS-layer all the time for no reason. That's where containers came into my mind.

Unfortunately ArcMap for Linux does not exist, so we went for Windows-containers. I started by copying some dependencies into the image and installing ArcGIS Desktop into the container using the silent installation. This works well on my windows host-maschine. However I'm not able to do that in my container. Nothing happens.

This is my docker-file

FROM mcr.microsoft.com/windows:ltsc2019 as base
WORKDIR /app
COPY ["ArcGIS 10.8.1/Desktop_German/SetUp.exe", "."]
COPY ["VC_redist.x86.exe", "."] # redistributable for VC++, required for ArcGIS
RUN "VC_redist.x86.exe /q /norestart # install the redistributable
RUN "SetUp.exe" ADDLOCAL=ALL ACCEPTEULA=yes ESRI_LICENSE_HOST=mylicenseserver SOFTWARE_CLASS=Editor SEAT_PREFERENCE=Float DESKTOP_CONFIG=TRUE /qn # install ArcGIS for Desktop

I also tried to just start an empty windows-based container, copy the files into it and use the containers shell in order to install manually:

docker run -it mcr.microsoft.com/windows:ltsc2019 cmd
C:\> ... // copy the files, install redistributable
C:\> SetUp.exe ADDLOCAL=ALL ACCEPTEULA=yes ESRI_LICENSE_HOST=mylicenseserver SOFTWARE_CLASS=Editor SEAT_PREFERENCE=Float DESKTOP_CONFIG=TRUE /qn # install ArcGIS for Desktop

However nothing happens. When I call tasklist within the container I see a Setup-process running. Next I check if files are copied to the containers filesystem:

enter image description here.

As you can see there's a folder called ArcGIS, so Setup is working. After a couple of minutes the process goes away, reoving the previously created folder leaving everything as before the setup. Has anyone an idea where I could get some information what goes on here? Or even tried to do that as well?

5
  • Could it be that other dependencies are missing? E.g. 10.8.1 needs at least .NET Framework 4.5.2
    – Berend
    Feb 10, 2023 at 11:08
  • @Berend potentially. I'm trying to read the install-logs which are pretty huge and thus hard to inspect. Feb 10, 2023 at 11:13
  • @Berend reg query "HKLM\SOFTWARE\Microsoft\Net Framework Setup\NDP" /s says it's .NET 4.7 installed Feb 10, 2023 at 11:31
  • To be 100% sure, you should probably check the x86 version, which is what ArcMap would be using, not x64. HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework
    – Berend
    Feb 10, 2023 at 11:36
  • @Berend that returns v4.0.30319. When I drill down into the SKUs-subkey, I get 4.5, 4.5.1, 4.5.2, 4.5.3, 4.6., 4.6.1, 4.6.2, 4.7, 4.7.1 and 4.7.2 Feb 10, 2023 at 11:39

1 Answer 1

0

Actually there's no point in doing that. ArcGIS Desktop is a desktop-app that runs only on Windows 10 and Windows Server (for a full list refer to https://desktop.arcgis.com/de/arcmap/latest/get-started/setup/arcgis-desktop-system-requirements.htm).

I thought about virtual maschines, but those are expensive and way too huge, in particular as I would replicate the entire OS-layer all the time for no reason. That's where containers came into my mind.

Of course you could go with windowsservercore (which is a bit smaller than ẁindows-image). However that creates a container with its own OS, which pretty much contradicts the purpose of a container (the mentioned base-image is around 11GB huge!) and effectivly turns your container into some virtual machine.

Having said this, here is how you would setup your container. The main-point here is to execute the msi-file instead of the standalone installer:

FROM mcr.microsoft.com/windowsservercore:ltsc2022 as base
WORKDIR .
COPY ["VC_redist.x86.exe", "."]
RUN VC_redist.x86.exe /q /norestart
COPY ["ArcGIS 10.8.1/Desktop_German", "."]
WORKDIR SetupFiles
RUN msiexec /i setup.msi /qn ADDLOCAL=ALL ACCEPTEULA=yes ESRI_LICENSE_HOST=mylicenseserver SOFTWARE_CLASS=Editor SEAT_PREFERENCE=Float DESKTOP_CONFIG=TRUE

For further details refer to my blog: https://developwithagsdesktop.blogspot.com/2023/02/running-arcgis-desktop-in-docker.html

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.