1-800-GETNAV (Nav on Docker #4)
What a cool phone number to have if you are a NAV partner in the US. Inspired by that and modernized it to the cloud world, it would be:
So here you are, probably the easiest way to spin up a NAV on Docker environment on Azure for development and test. The mechanism has been used over the last 2 months or so in the NAV Developer preview and in fact, it is the same set of PowerShell scripts that lies behind.
Much like the http://aka.ms/navdeveloperpreview, the http://aka.ms/getnav just points to an Azure Resource Manager template, which will deploy a Windows Server 2016 with Containers image on Azure and run some PowerShell scripts to initialize and setup a NAV on Docker container on the VM. The process is very simple. Navigate to the URL (http://aka.ms/getnav), login to your Azure subscription and fill out the template:
- do NOT press the Edit template button as this will de-couple the deployment from the template and make it NOT work.
- Resource group name needs to be unique in the selected subscription
- Vm Name needs to be globally unique
- Admin Password will be used as the password everywhere in the VM where a password is required - do not use double quotes in the password
- Select the Nav on Docker Image from https://hub.docker.com/r/microsoft/dynamics-nav you want to deploy (if you want to use an image from a private registry, you can replace the container later).
- Specify a secure URL to your development license file (or leave blank to use the demo license, which will allow you to make v2 extensions development in the range 50100 to 50149). See this blog post for info on how to create a secure url.
- Agree to the license terms, pin to the dashboard and press Purchase.
Making you think that it is done but it isn't really done.
In this image, it is pulling the NAV on Docker image. Status updates every 10 seconds, just wait it out (unless it errors out or takes significantly longer than suggested).
Note: If you during the installation phase reboot the VM, you will have to start over.
- Click the appropriate browser link under Download Self Signed Certificate to see the instructions and use the Download Certificate link to install the self-signed certificate on your local box.
- Hit the Connect link to open a remote desktop to the Azure VM
- View the installation status and make sure that no errors are present. Note, that errors are not always marked in red so things might indicate success, but if your installation status says:
then you have a non-functional container and I would recommend you to start over. (In this case the License File Secure Url was invalid). We are working on making failing deployments more obvious (like landing page saying Installation Failed!)
- Hit the Web Client link to connect to the Web Client
- Copy the launch.json and the app.json settings if you want to do VS Code development towards this server.
- Download the AL Extension for VS Code, which matches the version of NAV in the Azure VM by clicking the al-0.10.13928 link
The Azure VM has a primary container called navserver. The navserver container have public ports mapped to the host in order to allow you to connect to the Web Client or do VS Code development from public internet towards the VM.
On the desktop, you will also find a shortcut to a PowerShell prompt with the NAV Container Helper. You can use the NAV Container Helper to create additional NAV on Docker containers for CSide development and automatic conversion to AL. Much more about the NAV Container Helper later.
On the Azure VM you will find a folder called C:\DEMO in which you will find the PowerShell scripts which have been used to setup the VM.
If you want to investigate these, have a look at SetupNavContainer.ps1 and SetupDesktop.ps1.
If you want to replace or recreate the primary container (the navserver container), the navcontainerhelper has functions for this: Replace-NavServerContianer and Recreate-NavServerContainer. These functions are only for use in the Azure VM.
I want to create my own template!
If you want to create your own template, it is "easy". Have a look at http://www.github.com/microsoft/nav-arm-templates, fork the repository and make your changes. Then create your own Short-Url, where you can use https://bitly.com/, https://goo.gl/ or other providers. The advantage of using Google here is, that if you ever forget anything, you can be absolutely sure that Google has it stored somewhere:-)
The Long Url, which is pointed to by aka.ms/getnav is:
or to put it in another way:
followed by an escaped public URL to your ARM template manifest.