Usar BcContainerHelper

Completado

BcContainerHelper es una colección de scripts y cmdlets de PowerShell creados por Microsoft para ayudarle, como desarrollador, a crear y administrar contenedores para el desarrollo con Business Central. BcContainerHelper también es útil en un entorno DevOps para configurar canalizaciones de compilación que utilizan contenedores. Estos scripts proporcionan una forma sencilla de llevar a cabo muchas de las acciones más utilizadas en un contenedor de Business Central.

Para crear un nuevo contenedor, puede utilizar el cmdlet New-BcContainer en lugar del comando docker run. En el script, el cmdlet usa el comando docker run, pero solo proporciona un acceso y uso más fáciles.

El código de origen de BcContainerHelper se puede encontrar en GitHub.

Antes de poder comenzar, debe instalar este módulo en PowerShell. Abra un comando de PowerShell y use el cmdlet install-module.

install-module bccontainerhelper -Force

Crear un nuevo contenedor de Business Central

Para crear un nuevo contenedor de Business Central, puede utilizar el cmdlet New-BcContainer. También puede hacer algo aún más sencillo: usar el cmdlet New-BcContainerWizard. Con este asistente, crear un nuevo contenedor de Business Central es más fácil. Este cmdlet es parte de BcContainerHelper. Sin embargo, es posible que haya una versión más reciente del script disponible en línea. Le recomendamos que utilice este script para iniciar el asistente.

Invoke-Expression (New-Object System.Net.WebClient).DownloadString("http://aka.ms/bcdockerscript")

Captura de pantalla del lanzamiento del asistente de BCContainerHelper.

El asistente le ayudará a lo largo de los distintos pasos:

  1. Aceptar la licencia del usuario final.

  2. Seleccionar un contenedor local o una VM de Azure.

    Captura de pantalla del asistente de BCContainerHelper: contenedor.

  3. Configurar la autenticación deseada.

    Captura de pantalla del asistente de BCContainerHelper: autenticación.

  4. Configurar un nombre para el contenedor.

  5. Seleccionar una versión.

    Captura de pantalla del asistente de BCContainerHelper: versión.

  6. Seleccionar un país o región.

    Captura de pantalla del asistente de BCContainerHelper: país o región.

  7. Instalar el Test Toolkit.

    Captura de pantalla del asistente de BCContainerHelper: Test Toolkit.

  8. Asignar usuarios del Plan Premium.

  9. Crear usuarios de prueba.

  10. Cargar una licencia.

    Captura de pantalla del asistente de BCContainerHelper: licencia.

  11. Utilizar la base de datos de demostración de Cronus o conectarse a una base de datos existente.

    Captura de pantalla del asistente de BCContainerHelper: base de datos.

  12. Configurar DNS.

  13. Seleccionar proceso o aislamiento de Hyper-V.

    Captura de pantalla del asistente de BCContainerHelper: aislamiento.

  14. Seleccionar el límite de memoria.

  15. Guardar la imagen.

    Captura de pantalla del asistente de BCContainerHelper: guardar imagen.

  16. Crear un script de PowerShell.

El resultado y el paso final del proceso del asistente implican la creación de un script de PowerShell. Este script de PowerShell usará el cmdlet New-BcContainer para ejecutar el contenedor. Puede guardar este script para usarlo más adelante.

Captura de pantalla del asistente de BCContainerHelper: script de PowerShell.

El script generado se puede utilizar siempre que quiera crear un nuevo contenedor. El script generado usa el cmdlet Get-BcArtifactUrl para recuperar un vínculo al artefacto de Business Central. Este artefacto contiene la versión especificada de Business Central.

$containerName = 'MyDevContainer'
$password = 'P@ssw0rd'
$securePassword = ConvertTo-SecureString -String $password -AsPlainText -Force
$credential = New-Object pscredential 'admin', $securePassword
$auth = 'UserPassword'
$artifactUrl = Get-BcArtifactUrl -type 'Sandbox' -version '' -country 'us' -select 'Latest'
New-BcContainer -accept_eula
                -containerName $containerName
                -credential $credential
                -auth $auth
                -artifactUrl $artifactUrl
                -imageName 'mybcimage'
                -updateHosts

El cmdlet tiene algunos parámetros obligatorios, como containerName y accept_eula. El cmdlet New-BcContainer ofrece la práctica opción de -updateHosts, que crea automáticamente una entrada en su archivo de host local para registrar el nombre del contenedor con la dirección IP del contenedor.

Si no está seguro de qué versión de imagen necesita usar en su equipo Windows, puede usar la opción -useBestContainerOS. Esta opción detectará si sería mejor para usted utilizar una imagen basada en Windows Server Core 2016 (ltsc2016) o Windows Server Core 2019 (ltsc2019).

De forma predeterminada, la opción creará un contenedor con autenticación de Windows y le solicitará sus credenciales. Si usa sus credenciales locales de Windows, habilitará el inicio de sesión único (SSO). Para utilizar un nombre de usuario y una contraseña, puede utilizar la opción -auth NavUserPassword.

New-BCContainer -accept_eula
                -containerName $containerName
                -credential $credential
                -auth $auth
                -artifactUrl $artifactUrl
                -imageName 'mybcimage'
                -updateHosts
                -useBestContainerOS

Esta opción mostrará información útil en la ventana de salida que puede proporcionar a Microsoft cuando haga preguntas o informe de errores. Asegúrese de incluir siempre la salida completa.

Eliminar un contenedor de Business Central

Eliminar un contenedor es sencillo con el comando Remove-BcContainer.

Remove-BCContainer -containerName MyDevContainer

Compilar y publicar una extensión en un contenedor

Un contenedor es una forma excelente de compilar una extensión en un escenario de DevOps. BcContainerHelper proporciona cmdlets para ayudarle a compilar extensiones AL. Antes ha aprendido a configurar un montaje de enlace. Puede utilizar el mismo enfoque para obtener acceso a los archivos AL almacenados en una unidad local.

New-BCContainer -accept_eula
                -containerName $containerName
                -credential $credential
                -auth $auth
                -artifactUrl $artifactUrl
                -imageName 'mybcimage'
                -updateHosts
                -useBestContainerOS
                -additionalParameters @("-v c:\AL\Demo\:C:\src")

Utilice Compile-AppInBcContainer para compilar la extensión. Generará un archivo .app como resultado final.

Compile-AppInBCContainer -containerName MyDevContainer
                         -appProjectFolder c:\AL\Demo\

Cuando tenga una aplicación compilada, podrá publicarla en un contenedor. La mejor manera de publicar la aplicación es eliminar el contenedor que haya utilizado para compilar y luego iniciar uno nuevo. No se necesita un montaje de enlace en esta instancia porque la publicación utilizó las API de administración de Business Central para implementar la extensión en el contenedor. Si su aplicación no está firmada, debe especificar la opción -skipVerification.

Remove-BCContainer MyDevContainer
New-BCContainer -accept_eula
                -containerName $containerName
                -credential $credential
                -auth $auth
                -artifactUrl $artifactUrl
                -imageName 'mybcimage'
                -updateHosts
                -useBestContainerOS
Publish-BcContainerApp -containerName MyTestContainer
                       -appFile "c:\AL\Demo\Cronus_Demo_1.0.0.0.app"
                       -skipVerification
                       -sync
                       -install