Criando Apps Mendix usando Docker

Diógenes Dauster
5 min readOct 7, 2021

--

Para criar um novo app no Mendix hoje é necessário acessar o portal ou usar o Mendix Pro Studio. Porém essa tarefa é um pouco chata e dependendo da sua internet um pouco demorada. Então como resolver isso de forma simples? Foi onde me deparei com SDK da Mendix que já faz isso muito bem utilizando API da própria plataforma. Então juntei o SDK ao Docker para simplificar isso em apenas uma linha de comando e é isso que vou demonstrar nesse artigo. Lembrando que o SDK da Mendix é uma abstração da sua API utilizando TypeScript.

Configurando o SDK dentro do Docker

Seguindo o mesmo tutorial da Mendix disponível na documentação (setting-up-your-development-environment) criaremos um arquivo Dockerfile e colocaremos o passo a passo da documentação nele conforme imagem.

  1. Imagem Docker do Node já configurado na última versão.
FROM node

2. Diretório principal onde iremos trabalhar.

WORKDIR /my-app-generator

3. Iniciando o projeto JS para podermos instalar as dependências.

RUN npm init --yes

4. Instalando as dependências que nesse caso são: TypeScript, SDK Mendix e uma Biblioteca auxiliar.

RUN npm i -g typescript ; \
npm i mendixmodelsdk mendixplatformsdk when @types/when --save ; \
npm i --save-dev @types/node

5. Copiando nosso código TypeScript que irar ser compilado e gerara o APP.

COPY script.ts .

6. Inicializando o TypeScript .

RUN tsc --init --target es2018 script.ts

7. Compilando o nosso código TypeScript em JS.

RUN tsc

8. Executando o no código JS compilado passando como parâmetro o MendixUser, ApiKey o nome do projeto como variaveis de ambiente do docker para o ENTRYPOINT.

ENTRYPOINT node script.js ${MDX_USER} ${MDX_KEY} ${APPNAME}

Gerando o Código TypeScript

Na mesma pasta que criamos o Dockerfile crie um arquivo chamado script.ts e coloque o código abaixo.

Nele utilizamos o SDK da Mendix para conectar ao Portal da Mendix e criar um projeto/App novo.

  1. Importe do SDK
import { MendixSdkClient  } from 'mendixplatformsdk';

2. O código abaixo captura os parâmetros de entrada passados via terminal node script.js param0 param1 param2.

const myArgs = process.argv.slice(2);
const username = myArgs[0];
const apikey = myArgs[1];
const appName = myArgs[2] || `MoonCake`;

3. Função que cria o App, após autenticar no portal.

async function main() {
const project = await client.platform().createNewApp(appName);
}

main();

4. OBS: Desativamos o log do JS para não exibir sua APIKey no terminal.

const logfunc = console.log;
console.log = function () {}
logfunc(`App ${project.name()} criado com sucesso`);

Criando a Imagem Docker

Após a execução dos passos anteriores nossa imagem está pronta para ser criada para que possamos usá-la. Para isso acesse o terminal na pasta onde se encontra o arquivo Dockerfile que criamos e execute o seguinte comando. (Lembre-se que o Docker tem que estar instalado na sua máquina).

docker build -t create-app-mendix.

Após a execução se não ocorrer nenhum problema sua imagem já estará pronta para uso com a tag create-app-mendix.

Configurando API Key

  1. Para criar um API Key é necessário se logar no portal da Mendix e no canto direto do app bar clicar na foto do seu usuário.

2. Na tela seguinte que será apresentada clicar no ícone conforme imagem.

3. Na tela seguinte que será apresentada um menu do lado esquerdo da tela, nele clique em API Keys.

4. Dentro da tela de API Keys você poderá criar quantas chave de acesso necessitar para o seu usuário, nesse caso crie um e salve a key em um bloco de notas, pois não será exibida novamente.

Criando o App com o Docker

Existe várias maneiras de chamar o a nossa imagem Docker, contudo escolhi uma abordagem para não ter que digitar meu usuário e nem minha API Key com frequência. Então crie um arquivo .env no seu diretório e forneça as seguintes chaves.

No seu terminar rode o seguinte comando.

docker run --rm --env-file .env -e APPNAME=MyNewApp3 create-app-mendix

se preferir você pode rodar também o seguinte comando.

docker run --rm \
-e MDX_USER=user@user.com \
-e MDX_KEY=74839274923 \
-e APPNAME=MeuNovoAppViaDocker \
create-app-mendix

Após a criação do App será exibida a seguinte mensagem.

Agora basta conferir no portal da Mendix o seu App criado com sucesso.

Conclusão

Com isso podemos criar novos App no portal de forma simples utilizando o terminal e depois sincronizar com nossa IDE do Mendix após criação. Mais a principal funcionalidade de utilizar essa abordagem é a automatização desse processo para governança de uma empresa, que possibilita criação de novos usuários e gerenciamento de roles e grupos de acessos além da criação de novos apps por solicitação do time de desenvolvimento.

--

--

No responses yet