fragen zum Umgang mit Docker

20. September 2021 14:34

Hallo zusammen,

Wir steigen von NAV2009 zu BC Version 17 um (..bis jetzt, später 18)
Um in einer Umgebung zu programmieren und zu testen habe ich mir also Docker geholt und die ersten Test Container erstellt.
Das Skript sieht folgendermaßen aus:

$containerName = 'mybccontainer'
$credential = Get-Credential -Message 'Using Windows authentication. Please enter your Windows credentials for the host computer.'
$auth = 'Windows'
$artifactUrl = Get-BcArtifactUrl -type 'OnPrem' -version '17.5.22499.22546' -country 'de' -select 'Closest'
$licenseFile = '...lizensdatei.flf'
New-BcContainer `
-accept_eula `
-containerName $containerName `
-credential $credential `
-auth $auth `
-artifactUrl $artifactUrl `
-imageName 'mydefaultbcimage' `
-includeTestToolkit `
-licenseFile $licenseFile `
-memoryLimit 4G `
-includeAL -doNotExportObjectsToText `
-vsixFile (Get-LatestAlLanguageExtensionUrl) `
-updateHosts

Das Skript wurde mir ausgeworfen nachdem ich den Wizard benutzt habe.

Jedoch erhalte ich "nur" eine Umgebung mit dem Cronus Mandanten und den Standard Apps.
Ich möchte allerdings eine Umgebung, die die Daten aus unserem Prdoduktivsystem hat und auch alle Apps die installiert sind. Quasi eine Kopie des Echt Systems. Da könnte ich dann Programmieren und unter „realen Bedingungen“ testen und debugen.

Gibt es hierfür eine Möglichkeit so einen Container zu erstellen?
Ich meine mal gehört zu haben dass das geht. Allerdings habe ich da keine Möglichkeit gefunden.

Außerdem würde ich gerne wissen, ob es denn möglich ist aus meinem Container, den ich dann mit Apps und Daten bespielt habe zu einem Image zu überführen und aus dem Image später dann wieder Container zu erstellen. und wenn ja wie?

Danke im Vorraus. Bin leider weder experte für Docker noch für BC.


Liebe Grüße

Re: fragen zum Umgang mit Docker

21. September 2021 11:01

mal als Beispiel - erstellt nen Container, wo die DB auf nem separatem SQL-Server liegt -> Hinweis, hab den Code einfach nur aus einem meiner Scripte (wird per GUI befüllt) kopiert
Code:
New-BCContainer -accept_eula `
                    -accept_outdated `
                    -containerName $containerName `
                    -Auth NavUserPassword `
                    -artifactUrl $artifactUrl `
                    -Credential $navCred `
                    -databaseServer $databaseServer `
                    -databaseInstance $databaseInstance `
                    -databaseName $databaseName `
                    -databaseCredential $databaseCredential `
                    -updateHosts `
                    -memoryLimit $memoryLimit `
                    -isolation process `
                    -useBestContainerOS `
                    -myScripts $myScripts


weiterhin benutze bitte die Code-Tags, dann ist der Code besser zu lesen

Zur Frage mit den Images - da hilft google ganz gut weiter
Bsp:
https://www.scalyr.com/blog/create-docker-image/

Re: fragen zum Umgang mit Docker

22. September 2021 14:58

sweikelt hat geschrieben:
Code:
New-BCContainer -accept_eula `
                    -accept_outdated `
                    -containerName $containerName `
                    [...]
                    -myScripts $myScripts


Es funzt bei mir leider nicht. Hast du es bei dir getestet ob es funktioniert?
Ich bekomme eine Fehlermeldung darüber, dass irgendwas mit meinem artifactUrl nicht stimmt. Die Fehlermeldung lautet:
You have to specify artifactUrl or imageName when creating a new container.
In C:\Program
Files\WindowsPowerShell\Modules\BcContainerHelper\2.0.15\ContainerHandling\New-NavContainer.ps1:691 Zeichen:13
+ throw "You have to specify artifactUrl or imageName when ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OperationStopped: (You have to spe... new container.:String) [], RuntimeExceptio
n
+ FullyQualifiedErrorId : You have to specify artifactUrl or imageName when creating a new container.


Da ich auch nicht sehe wie bei dir die Variablen gefüllt sind mache ich eventuell ja da etwas falsch.
Hier ist mein aktueller Skript:
Code:
$containerName = 'mybccontainerDEV'
$credential = Get-Credential -Message 'Using Windows authentication. Please enter your Windows credentials for the host computer.'
$databaseServer = http://blablabla/
$databaseInstance = blabla
$databaseName = bla
$databaseCredential = Get-Credential -Message 'Using Database Credential authentication. Please enter your Database Credential.'
$auth = 'Windows'
$artifactUrl = Get-BcArtifactUrl -type 'OnPrem' -version '17.5.22499.22546' -country 'de' -select 'Closest'
New-BcContainer `
    -accept_eula `
    -accept_outdated `
    -containerName $containerName `
    -credential $credential `
    -databaseServer $databaseServer `
    -databaseInstance $databaseInstance `
    -databaseName $databaseName `
    -databaseCredential $databaseCredential `
    -auth NavUserPassword `
    -artifactUrl $artifactUrl `
    -memoryLimit 4G `
    -isolation process `
    -useBestContainerOS `
    -updateHosts

Die Option "-myScripts" habe ich weggelassen da ich auch hier nicht weiß wie es bei dir befüllt ist.

Außerdem ist mir aufgefallen, dass ich hier auch keinen Port angegeben habe. Ist das denn nicht nötig?


Würde mich sehr freuen wenn wir das Problem lösen könnten.

Re: fragen zum Umgang mit Docker

22. September 2021 15:39

Volkan hat geschrieben:Ich möchte allerdings eine Umgebung, die die Daten aus unserem Prdoduktivsystem hat und auch alle Apps die installiert sind

Hier habe ich einen Artikel dazu verlinkt.

Re: fragen zum Umgang mit Docker

22. September 2021 16:01

ja natürlich - ich hole mir vorher noch die entsprechende URL der NAV/BC-Version, die ich gerne hätte

als Beispiel: -> wobei $navVersion z.B. 18 ist
Code:
$artifactUrl = Get-BCArtifactUrl -country de -type OnPrem $navVersion


für 18.2 ist $navVersion 18.2

wie gesagt, dass sollen nur Beispiele sein.
Meine Variablen werden aus ner JSON ausgelesen, die vorher per GUI erstellt wurde, nachdem der User auf "Container anlegen" gedrückt hat -> ging mir darum, dass die User ohne PS die Container anlegen können