Business Central en nuestro equipo local con Docker

Business Central en nuestro equipo local con Docker

Una buena opción para hacer las primeras pruebas de nuestros desarrollos sobre Business Central es probar estos en un entorno local (como harías con otro tipo de desarrollos), pero, ¿Cómo hago para tener un Business Central en mi equipo?. Muy sencillo, usando Docker.

En este artículo te explico como configurarlo todo para que puedas hacerlo.

Instalar las herramientas

Lo primero que vamos a tener que hacer, es asegurarnos que tenemos las herramientas necesarias instaladas en nuestro equipo. Vamos a necesitar: PowerShell y por supuesto Docker para Windows.

Instalar y configurar PowerShell

Si no tienes instalado ya en tu equipo PowerShell, vas a tener que descárgalo e instalarlo. Para ello, puedes usar el comando winget en una consola de comandos.

Ves a inicio > ejecutar y escribe «cmd«, y se te abrirá la consola. Desde ahí escribe el siguiente comando para ver que versiones de PowerShell hay disponibles:

winget search Microsoft.PowerShell
Business Central en nuestro equipo local con Docker: consola de comandos mostrando las distintas versiones de PowerShell

Luego lanzamos el siguiente comando para instalar PoweShell:

winget install --id Microsoft.Powershell --source winget

Ahora ya esta instalado en el equipo. Abre la aplicación y verás una consola como esta:

Business Central en nuestro equipo local con Docker:Consola de PowerShell

Hay otras formas de instalar PowerShell que puedes consultar desde aquí.

Ahora vamos a lanzar el siguiente comando:

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

Este comando establece la política de ejecución de scripts en el sistema. Específicamente, establece la política en «RemoteSigned» para el usuario actual.

La política de ejecución de scripts es una característica de seguridad en PowerShell que controla cómo y cuándo se pueden ejecutar scripts. En este caso, «RemoteSigned» significa que los scripts descargados de internet deben estar firmados digitalmente antes de ejecutarse, mientras que los scripts locales no requieren una firma digital para ejecutarse. Lo necesitaremos más adelante para ejecutar los scripts que crearan todo lo necesario en Docker.

Finalmente, vamos a necesitar unas utilidades especificas para Business Central llamadas bccontainerhelper, que instalaremos con el siguiente comando:

install-module bccontainerhelper -Force

Ya tenemos esta parte cubierta, ahora vamos a instalar Docker y luego seguiremos con esto.

Instalar Docker para Windows

Lo siguiente que se tiene que instalar es Docker para Windows, que sencillamente puedes descargar el instalable desde su web y ejecutarlo.

https://docs.docker.com/get-docker/

Una vez instalado, tienes que cambiar la configuración de este para que ejecute contenedores Windows.

Business Central en nuestro equipo local con Docker : Opción de Docker para cambiar a contenedores Windows

Finalmente, para que te funcione, tienes que ir a las características del sistema para activar los contenedores y Hyper-V. Para ello, clica en la tecla Windows y luego escribe características y clica sobre el menú de «Activar o desactivar características de Windows».

Activar características de Windows

Clica sobre Hyper-V y contenedores para activarlas y luego acepta. Te pedirá que reinicies. Venga, que te espero aquí. (Has de tener una versión pro de Windows)

Características de Windows para contenedores Docker.

Crear un Business Central en nuestro equipo local con Docker

Hasta ahora, hemos estado preparando el equipo para lo que de verdad importa y queremos: tener una instancia de Business Central en nuestro equipo local gracias a Docker.

Para crearlo todo, vamos a usar el módulo que instalamos anteriormente de BCContainerHelper que hemos instalado antes. Este comando lo que va a hacer es lanzar un wizard que nos va a realizar una serie de preguntas sobre la instancia de BC que vamos a instalar: versión, autenticación, configuración… Con estas preguntas, se va a generar un script de PowerShell que será el que finalmente lancemos.

Ejecuta PowerShell en modo administrador y escribe:

New-BcContainerWizard

Empezará el wizard.

bccontainerhelper

Aquí tienes la documentación e instrucciones del wizard.

El script generado, luego puedes usarlo siempre que lo necesites y no es necesario tener que lanzar el wizard cada vez. Este es el script que yo uso (y que puedes usar si quieres):

$containerName = 'bussinescentral'
$password = 'P@ssw0rd'
$securePassword = ConvertTo-SecureString -String $password -AsPlainText -Force
$credential = New-Object pscredential 'admin', $securePassword
$auth = 'UserPassword'
$artifactUrl = Get-BcArtifactUrl -type 'Sandbox' -country 'es' -select 'Latest'
New-BcContainer -accept_eula-containerName $containerName -credential $credential-auth $auth -artifactUrl $artifactUrl-memoryLimit 6G -updateHosts-includeAL

Guarda este script en un fichero de PowerShell y ejecútalo. Ahora toca esperar un rato (a veces parece que no esta haciendo nada, déjalo terminar…).

Business Central en nuestro equipo local con Docker: Docker desktop con Business Central ejecutandose

¡Ahora solo tienes que abrir tu navegador y usarlo!

Business Central en nuestro equipo local con Docker: Business Central funcionando en local

Extra: confugurar launch.json para usar la instancia local de Business Central

Para lanzar tus extensiones sobre esta instancia, solo tienes que añadir una nueva configuración en tu fichero launch.json y usarla:

{
	"name": "LOCAL",
	"request": "launch",
	"type": "al",
	"environmentType": "OnPrem",
	"server": "http://businesscentral",
	"serverInstance": "BC",
	"authentication": "UserPassword",
	"startupObjectId": 22,
	"startupObjectType": "Page",
	"breakOnError": "All",
	"launchBrowser": true,
	"enableLongRunningSqlStatements": true,
	"enableSqlInformationDebugger": true,
	"tenant": "default"
}

Espero que te sirva de ayuda. ¡Nos leemos!

Gracias por leerme. Últimamente le estoy dedicando mucho tiempo a generar contenido para Youtube y Twich. Te invito a que te pases por los canales y me sigas 🙂

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *