In my job as a software developer for SICK I recently worked on setting up a local development environment for the PLM system Aras Innovator in Docker. Before that we used virtual machines to setup a reproducable local development environment, but we had issues with performance and maintaining the virtual machines required a lot of work. The Docker images are much easier to maintain, run very performant and can be installed quickly for every developer in our team. I want to share my experience on setting up Aras Innovator in Docker with you.
Inhalt
Firstly I want to share my GitHub Repo. You can clone it and build your own Aras Innovator 12 SP9 Docker Image in minutes. There are just a couple of manual steps you need to execute to insert your license key and MAC address to be able to actually use it.
You can not only run Aras Innovator 12 but also Aras Innovator 11 and the latest Aras Innovator Release 19 in Docker. Even though according to Aras it is not possible to run Aras Innovator in Docker yet. You only need the right Aras Innovator Setup file and might need to install a different ASP.NET Core/.NET Core Runtime and Hosting Bundle version.
Installation
A list of steps to get you own Aras Innovator Docker container up and running:
- install Docker Desktop for Windows
- start Docker Desktop
- switch Docker Desktop to use Windows containers
- clone / download my GitHub repository aras-innovator-docker
- make sure to follow the steps in the README.md file to edit your MAC address and add your Aras Innovator license to the InnovatorServerConfig.xml file
- open a Terminal of your choice (e.g. PowerShell), navigate to the folder where you cloned the GitHub repository and execute the command ‘docker-compose up -d’
- after building the image your Aras Innovator environment will be available under http://localhost/Innovator
Common issues
The most common issue occurs if the MAC address you specified does not match the license key you entered in the InnovatorServerConfig.xml. Also make sure that you use a license key that matches the Aras Innovator version, which in this case is 12 SP9.
Setting up a real development environment
If you are planning on developing you own Aras Innovator solutions inside a Docker container I would recommend to split up the webserver and SQL database into separate containers. This requires some additional steps that highly depend on your needs and level of customization. That is why I did not do this for the demo repository on GitHub. If you need help setting up something like this feel free to contact me.
Aras Installer parameters
If you inspect the Dockerfile you can see that the InnovatorSetup.msi is installed silently with msiexec.exe and a lot of parameters. I want to give a list of those parameters to you as this might help customizing the demo Dockerfile to your needs and maybe splitting it up into separate images for the webserver and SQL database as recommended above. There might be even more parameters that could be analyzed by using the Microsoft tool Orca.exe. Here is a list of potential parameters (and potential values as far as I know them) for the msiexec.exe:
- /i Location of installer | example value: C:\\Setup\\InnovatorSetup.msi
- /l Location of log file to be generated | example value: C:\\Setup\\InnovatorSetupLog.log
- INSTALLDIR Location to install Code Tree | example value: C:\\Innovator
- UPGRADEORINSTALL | example value: 1
- DB_CREATE_NEW_OR_USE_EXISTING use ‘0’ when you want the database to be created or ‘3’ if you want to use an existing database | example value: 0
- SMTPSERVER | example value: queue
- WEBALIAS Web Alias for IIS | example value: Innovator
- VAULTNAME | example value: InnovatorDb
- VAULTFOLDER Location of the physical vault | example value: C:\\Innovator\\Vault
- IS_SQLSERVER_SERVER Database Server Name | example value: mysqlservername
- IS_SQLSERVER_DATABASE Name of Database to be created | example value: InnovatorDb
- IS_SQLSERVER_AUTHENTICATION | example value: 1
- IS_SQLSERVER_USERNAME Recommended to use ‘SA’, Login for SQL Server to create DB | example value: sa
- IS_SQLSERVER_PASSWORD Password for the User above (default ‘innovator’ for ‘sa’) | example value: YRQsxj*7i!NQdk
- SQL_SERVER_LOGIN_NAME Database owner login name (recommended to use ‘innovator’) | example value: innovator
- SQL_SERVER_LOGIN_PASSWORD Password for the User above (default ‘innovator’ for ‘innovator’ | example value: YRQsxj*7i!NQdk
- SQL_SERVER_LOGIN_REGULAR_NAME | example value: innovator_regular
- SQL_SERVER_LOGIN_REGULAR_PASSWORD | example value: YRQsxj*7i!NQdk
- INSTALL_CONVERSION_SERVER | example value: 1
- CONVERSION_SERVER_NAME | example value: ConversionServer
- CONVERSION_SERVER_APP_URL | example value: http://localhost/Innovator/Server/InnovatorServer.aspx
- INSTALL_AGENT_SERVICE | example value: 1
- ARAS_AGENTSERVICE_TO_INNOVATORSERVER_URL | example value: http://localhost/Innovator/Server/InnovatorServer.aspx
- INNOVATOR_TO_SERVICE_ADDRESS | example value: http://localhost:8734/ArasInnovatorAgent
- AS_FOLDER | example value: ArasInnovatorAgent
Is there any other possible cause for the “License Key is Invalid” error?
We’ve followed these instructions on several machines, and tried several new license keys, triple checking the MAC addresses and Innovator versions.
Thanks for any input, and this guide!
Regards
Hi Ed, I think we already wrote on GitHub and you got it to work? If not feel free to contact me again.
REALLY great job ! Thanks a lot for sharing it !
Thanks! Glad if it is helpful to you. 🙂
Have you ever tried getting this to work with Innovator Release 23? (Or anything else 14+)
I have tried but keep running into issues setting up the image.
Yes, I have also updated the Github Repo. It now contains Aras Innovator Release 2023.
Hello Sebastian, Great job on a very complex task. I am also trying to do this but we have a different scenario. We are using AWS and creating the app server on EC2 and database on RDS. Is it possible that we can avoid adding passwords in the innovatorconfig or docker file and may be read it from some vault..
You should be able to build the containers with a dummy password and change it later. But the InnovatorServerConfig.xml has to contain the passwords as far as I know.
Hi Sebastian,
Can’t we use existing InnovatorSetup.msi and existing MYSQL Server in Docker file.
Yes, you can. But you have to make sure to install the required dependencies for the specific Aras Innovator version you are using.
Hi Sebastian,
I have followed all the steps which you mentioned, i can able to build the docker container but am not able to access my Aras local host.
Note: I am using my existing ArasInnovator.msi file and SQL Server details.
Could you please help me on this same.
Do you get an error message or can’t you reach it at all? Is port 80 displayed as correctly mapped in Docker Desktop?
Hi Sebastian,
I have followed all the steps which you included in the git repository. I can able to build the docker container but still not able to access the localhost any idea?
could you please help me on this same.
we are planning on developing our own Aras Innovator solutions inside a Docker container.FOr that we need to split up the webserver and SQL database into separate containers. Can you provide additional steps for doing so.?
The easiest way would be to export a database backup from the installation in one container. Then you can move the installation steps for the SQL server setup to a separate Dockerfile for the database and restore the backup file there.
Additionally you have to edit the installation parameters for the InnovatorSetup.msi: “DB_CREATE_NEW_OR_USE_EXISTING” has to be set to “3” to use an existing database and “IS_SQLSERVER_SERVER” has to be set to the host name or IP adress of your new database container (you should specify that in your docker-compose file).
Hi Sebastian,
I am planning to split up the webserver and SQL database into separate containers in my Aras application . Could you please help me on this same.
Regard
Narendra
The easiest way would be to export a database backup from the installation in one container. Then you can move the installation steps for the SQL server setup to a separate Dockerfile for the database and restore the backup file there.
Additionally you have to edit the installation parameters for the InnovatorSetup.msi: “DB_CREATE_NEW_OR_USE_EXISTING” has to be set to “3” to use an existing database and “IS_SQLSERVER_SERVER” has to be set to the host name or IP adress of your new database container (you should specify that in your docker-compose file).
Hi Sebastian,
thank you very much for sharing your approach. I’m really interested in guidance for the split setup. I also read something about also splitting the vault server to an extra container.
What do you think about that?
Hi Andreas,
I haven’t tried that yet. But it should absolutely be possible.
Best regards,
Sebastian
After many times error, finally it seems the container created and started properly, but why I still can’t visit http://localhost/Innovator
I just re-tested everything and it works fine for me. Is the port 80 displayed as correctly mapped in Docker Desktop?
Dear Sebastian,
I’m trying to install ARAS with your container definition, after several problems with WAS (preventing run IIS) in a VM environment, but, the docker image creation is stopped with this message:
” > [server 1/11] FROM mcr.microsoft.com/dotnet/framework/aspnet:4.7.2-windowsservercore-ltsc2019@sha256:c3058903819c3c1339f7f5ecbe32301bd475b2d371ac4d9c90a0f706c7569f9a:
——
failed to solve: failed to register layer: link /Files/Program Files/common files/Microsoft Shared/Ink/en-US/micaut.dll.mui /Files/Program Files (x86)/common files/Microsoft Shared/ink/en-US/micaut.dll.mui: no such file or directory”
Probably, it is a question of available space in HD, but, not clear for me, so I have some questions
1) Do you know what is the size of full installation? (apart from addtional one for DB and Vault)
2) How to remove the incomplete image?
3) Is there any other recommendation to solve it?
Congrats for this page and your solution, and thanks in advance for your help
Best Regards / MfG
FJ
Hi Frank,
I never ran into this problem, so I am not sure what is causing it.
1) For me the image size for the built image as in the demo here is 13,8 GB. (Welcome to Windows images :D)
2) You should be able to clean up you unused images by executing ‘docker image prune -a’.
3) Actually I do not have a recommendation currently. Are you able to start a container from the ‘mcr.microsoft.com/dotnet/framework/aspnet:4.7.2-windowsservercore-ltsc2019’ without any modifications?