If you haven't read the first post about the NavContainerHelper, you should do so.
If you have a created a SQL Server container using one of the methods described any of the blog posts:
Then you will have the variables $databaseServer, $databaseInstance, $databaseName and $databaseCredential pointing to a database you can use to start up a NAV container. These parameters can be given directly to New-NavContainer.
If you have created your external database through other means, please set these variables in PowerShell. Please try the following script to see whether a docker container can connect to your database:
$dbPassword = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto([System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($databaseCredential.Password)) $databaseServerInstance = @{ $true = "$databaseServer\$databaseInstance"; $false = "$databaseServer"}["$databaseInstance" -ne ""] docker run -it --name sqlconnectiontest microsoft/mssql-server-windows-developer powershell -command "Invoke-Sqlcmd -ServerInstance '$databaseServerInstance' -Username '$($databaseCredential.Username)' -Password '$dbPassword' -Database '$databaseName' -Query 'SELECT COUNT(*) FROM [dbo].[User]'"
If the above script fails, you will not succeed starting a NAV container with these credentials, before your connection test succeeds.
Please remove your connection test container using:
docker rm sqlconnectiontest -f
When you successfully have conducted the connection test above, you can start a NAV container using this script:
$navcredential = New-Object System.Management.Automation.PSCredential -argumentList "admin", (ConvertTo-SecureString -String "P@ssword1" -AsPlainText -Force) New-NavContainer -accept_eula ` -containerName "test" ` -Auth NavUserPassword ` -imageName $imageName ` -Credential $navcredential ` -databaseServer $databaseServer ` -databaseInstance $databaseInstance ` -databaseName $databaseName ` -databaseCredential $databaseCredential
If your database doesn't have a license file, you can upload a license file using:
Import-NavContainerLicense -containerName test -licenseFile "https://www.dropbox.com/s/abcdefghijkl/my.flf?dl=1"
If you do not import a license file, you are likely to get errors like this when trying to access the NAV container.
The following SQL error was unexpected: Invalid object name 'master.dbo.$ndo$srvproperty'.
You can add users to the database using:
New-NavContainerNavUser -containerName test -Credential $navcredential
Enjoy
Freddy Kristiansen Technical Evangelist