Ir para o conteúdo

Containers

Usando as imagens disponíveis do BotCity, você pode ter acesso rapidamente ao BotCity CLI e ao BotCity Runner para o seu projeto. Você também pode configurar seu ambiente de desenvolvimento em pouco tempo.

Imagens disponíveis

Atualmente, fornecemos as seguintes imagens:

Nome da Imagem Descrição
botcity-base Imagem BotCity com BotCity Runner e CLI do BotCity Studio SDK
botcity-java-web-firefox Extensão da imagem botcity-base com Java e o navegador Firefox
botcity-java-web-chrome Extensão da imagem botcity-base com Java e o navegador Chrome
botcity-python-web-firefox Extensão da imagem botcity-base com Python 3.11 e o navegador Firefox
botcity-python-web-chrome Extensão da imagem botcity-base com Python 3.11 e o navegador Chrome
botcity-python-desktop Extensão da imagem botcity-base com Python 3.11 e suporte para Desktop

botcity-base é uma imagem base e contém Java, bem como o Runner da BotCity e o CLI. Todas as outras imagens são derivadas desta imagem e adicionam recursos adicionais.

Alerta

As imagens oferecidas pela BotCity foram construidas para arquiteturas amd64, sugerimos que o host onde você executará os contêineres tenha suporte para esta arquitetura ou tenha um modo de compatibilidade.

Espelhos

As imagens de contêiner da BotCity estão disponíveis nos seguintes espelhos:

Espelho Prefixo da imagem
Docker Hub botcity/
Amazon AWS ECR public.ecr.aws/

Quando usar qual imagem

Se você pretende simplesmente usar o CLI da BotCity, poderá usar a imagem botcity-base.

Para a execução de automações Web em modo headless, você pode escolher a imagem apropriada para o seu projeto, dependendo do navegador e linguagem usados. Por exemplo, botcity-python-web-firefox ou botcity-java-web-chrome.

Para a execução de automações Python que requerem aplicativo desktop, você pode escolher a imagem botcity-python-desktop.

Configuração

Para configurar o ambiente, você pode utilizar as seguintes variáveis de ambiente:

  • SERVER: O prefixo do servidor. Por exemplo: developers para developers.botcity.dev.
  • LOGIN: A informação de login do BotCity Maestro, disponível na página Dev. Environment.
  • KEY: A chave de API do BotCity Maestro, disponível na página Dev. Environment.
  • WORKSPACE: A informação do workspace no BotCity Maestro, disponível na página Dev. Environment.
  • MACHINE_ID: O ID do BotCity Runner a ser utilizado, disponível na página Runners.
  • IGNORE_SSL: (Opcional) Se definido como true, ele ignorará a validação do certificado SSL. Use com cautela!
  • DEBUG_ENABLED: (Opcional) Se definido como true, ele habilitará o modo de depuração e produzirá logs mais verbosos. Use com cautela!

Importante

As variáveis de ambiente SERVER, LOGIN, KEY, WORKSPACE são obrigatórias para o funcionamento correto da ferramenta BotCity CLI e MACHINE_ID é obrigatório para o BotCity Runner. As outras variáveis são configurações opcionais.

Para obter os valores para a configuração do ambiente, visite a página Amb. de Desenvolvedor.

Uso

As imagens contém as ferramentas BotCity Runner e BotCity CLI do BotCity Maestro SDK.

Eles podem ser lançados através dos comandos BotCLI eBotRunner e todos os parâmetros são encaminhados para as respectivas ferramentas.

BotCity CLI

Para iniciar a ferramenta BotCLI, basta executar o seguinte comando:

<docker config> <image name> BotCLI <parameters here>

Importante

Para os exemplos apresentados, assumiremos que você já tem os valores para:

  • <docker config>: Referente ao comando de configuração das variáveis de ambiente.
docker run --rm -ti -e WORKSPACE=SEU_WORKSPACE -e SERVER=SEU_SERVER -e LOGIN=SEU_LOGIN -e KEY=SUA_KEY -e MACHINE_ID=SUA_MACHINE_ID
  • <image name>: Referente ao nome da imagem que você deseja usar.
botcity/botcity-base:latest
  • <parameters here>: Referente aos parâmetros que você deseja passar para o comando BotCLI.
machine status --mid "vm-01"

Para obter mais informações sobre a ferramenta BotCLI, consulte a documentação do BotCity CLI.

BotCity Runner

Para iniciar a ferramenta Runner, basta executar o seguinte comando:

<docker config> <image name> BotRunner

Importante

Para o Runner da BotCity, a variável de ambiente MACHINE_ID é obrigatória em <docker config>.

Pode ser adicionado o parâmetro -single ao final no comando para executar uma única tarefa e encerrar a execução do contêiner.

Para obter mais informações sobre a ferramenta BotCity Runner, consulte a documentação do BotCity Runner .

Exemplos

Aqui estão alguns exemplos práticos usando as imagens de container da BotCity.

Informações

Para os propósitos deste exemplo, assumiremos o seguinte valores:

  • Nosso servidor BotCity está em execução em company.botcity.dev
  • Nosso espaço de trabalho da BotCity é company
  • Nosso Login de BotCity é company
  • Nossa chave de BotCity é COM_123ABCBA321
  • Nosso ID da máquina é DOCKER_01

O <docker config> será para todos os casos:

docker run --rm -ti -e WORKSPACE=company -e SERVER=company -e LOGIN=company -e KEY=COM_123ABCBA321 -e MACHINE_ID=DOCKER_01

Criando uma máquina com o CLI da BotCity

Neste exemplo, usaremos a CLI da BotCity para criar uma nova máquina com o machineId como DOCKER_01 usando o espelho AWS ECR.

<docker config> public.ecr.aws/botcity/botcity-base:latest BotCLI machine new -machineId DOCKER_01

O comando explicado:

  • <docker config> Referente ao comando de configuração das variáveis de ambiente que descrevemos no início desta seção.
  • public.ecr.aws/botcity/botcity-base:latest é a imagem utilizada, onde:
    • botcity-base é o nome.
    • :latest é a tag.
  • BotCLI é o nome do comando.
  • machine new é a ação de comando.
  • -machineId DOCKER_01 são parâmetros enviados ao comando BotCLI machine new.

Dica

Para usar o Docker Hub como o espelho, basta alterar o nome da imagem de public.ecr.aws/botcity/botcity-base:latest para botcity/botcity-base:latest

Implantando um bot com o CLI do BotCity

Neste exemplo, implantaremos uma automação Python disponível no arquivo BotPython-1.0.tar.gz usando o espelho do Docker Hub.

Para que a CLI da BotCity tenha acesso ao arquivo BotPython-1.0.tar.gz, precisaremos compartilhar a pasta com o contêiner.

<docker config> -v my_code_folder:/code botcity/botcity-base:latest BotCLI bot deploy -version 1.0 -botId BotPython -file /code/BotPython-1.0.tar.gz -python

O comando explicado:

  • <docker config> Referente ao comando de configuração das variáveis de ambiente que descrevemos no início desta seção.
  • -v my_code_folder:/code é a pasta com o arquivo BotPython-1.0.tar.gz para compartilhar com o contêiner
    • :/code é o caminho onde o arquivo será salvo dentro do contêiner.
  • botcity/botcity-base:latest é a imagem utilizada, onde:
    • botcity-base é o nome.
    • :latest é a tag.
  • BotCLI é o nome do comando.
  • bot deploy é a ação de comando.
  • -version 1.0 -botId BotPython -file /code/BotPython-1.0.tar.gz -python são os parâmetros enviados ao comando BotCLI bot deploy.

Importante

Para implantar ou atualizar um bot ou executar qualquer outra ação que depende de arquivos no disco, você precisará compartilhar esta pasta com o container e ajustar o caminho de acordo.

Para obter mais informações sobre pastas compartilhadas e Docker, visite a documentação do Docker.

BotCity Runner para automações Python Headless com Firefox

Neste exemplo, usaremos o BotCity Runner para executar automações Python que usam o navegador Firefox no modo headless usando o espelho AWS ECR.

<docker config> public.ecr.aws/botcity/botcity-python-web-firefox:latest BotRunner

O comando explicado:

  • <docker config> Referente ao comando de configuração das variáveis de ambiente que descrevemos no início desta seção.
  • public.ecr.aws/botcity/botcity-python-web-firefox:latest é a imagem utilizada, onde:
    • botcity-python-web-firefox é o nome.
    • :latest é a tag.
  • BotRunner é o nome do comando.

Não são necessários parâmetros adicionais para uma execução padrão do BotCity Runner, porém pode utilizar -single para personalizar a execução.

Dica

Para usar o Docker Hub como o espelho, basta alterar o nome da imagem de public.ecr.aws/botcity/botcity-python-web-firefox:latest para botcity/botcity-python-web-firefox:latest.

Criando um arquivo compose

Você também pode usar o Docker Compose para gerenciar seus contêineres de forma mais eficiente e organizada. Você pode criar um arquivo docker-compose.yml com a seguinte estrutura:

version: "3.0"
services:
  docker-1:
    image: botcity/botcity-python-web-chrome
    command: BotRunner
    environment:
        SERVER: developers
        LOGIN: YOUR_LOGIN
        KEY: YOUR_KEY
        MACHINE_ID: YOUR_MACHINE_ID

E então você pode executar o comando docker-compose up no terminal para iniciar o contêiner.

Atenção

As imagens do Chrome exigem que o parâmetro --shm-size seja definido como pelo menos 1g. Exemplo: --shm-size="1g".

O parâmetro --shm-size permite especificar o tamanho da memória compartilhada disponível para os contêiners em unidades de bytes. Isso é útil em cenários onde você está executando aplicativos dentro de contêiners que fazem uso extensivo de memória compartilhada.

Se você estiver usando docker compose, poderá definir esse parâmetro através do parâmetro shm-size. Veja o exemplo abaixo:

    version: "3.0"
    services:
      docker-1:
        image: botcity/botcity-python-web-chrome
        command: BotRunner
        environment:
            SERVER: developers
            LOGIN: YOUR_LOGIN
            KEY: YOUR_KEY
            MACHINE_ID: YOUR_MACHINE_ID
        shm_size: '1gb'

Dica

Você também pode criar instâncias de Runners diferentes para executar ao mesmo tempo com o Docker Compose, como no exemplo abaixo:

    version: "3.0"
    services:
      docker-1:
        image: botcity/botcity-python-web-chrome
        command: BotRunner
        environment:
            SERVER: YOUR_SERVER
            LOGIN: YOUR_LOGIN
            KEY: YOUR_KEY
            MACHINE_ID: YOUR_MACHINE_ID_1
      docker-2:
        image: botcity/botcity-python-web-chrome
        command: BotRunner
        environment:
            SERVER: YOUR_SERVER
            LOGIN: YOUR_LOGIN
            KEY: YOUR_KEY
            MACHINE_ID: YOUR_MACHINE_ID_2

Personalizando as imagens

Se você precisar personalizar as imagens, poderá criar seu próprio Dockerfile e usar uma das imagens da BotCity como base, pois elas já tem todas as ferramentas para o uso dos comandos BotCLI e BotRunner prontas.

Então, a partir de uma imagem existente, você pode adicionar pacotes necessários para o seu projeto.

Como exemplo, usamos a imagem botcity-python-desktop como base e adicionamos o pacote freerdp2-x11 como dependência do projeto.

FROM botcity/botcity-python-desktop:latest

# Install System Dependencies
RUN apt-get update && \
     \
    apt-get -y install freerdp2-x11 \
    --no-install-recommends && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

Em seguida constrói-se a imagem usando o seguinte comando:

docker build -t my-botcity-python-desktop-rdp:latest .

E então você pode usar a imagem my-botcity-python-desktop-rdp:latest em seu projeto.

version: "3.0"
services:
  docker-1:
    image: my-botcity-python-desktop-rdp
    command: BotRunner
    environment:
        SERVER: YOUR_SERVER
        LOGIN: YOUR
        KEY: YOUR_KEY
        MACHINE_ID: YOUR_MACHINE_ID

Importante

Ao criar uma imagem customizada com o Dockerfile, tenha cuidado para que as instruções ENTRYPOINT ou CMD não sejam sobrescritas, pois isso quebrará as ferramentas BotCity Runner e BotCity CLI.

Recomendamos como uma boa prática usar a imagem da BotCity como base e adicionar somente as dependências necessárias. Para obter mais informações sobre Dockerfiles e como usá-los, visite a documentação do Docker.

Solução de problemas

Ao usar o espelho da AWS ECR, recebo uma mensagem de erro dizendo pull access denied for public.ecr.aws/botcity/botcity-base, repository does not exist or may require 'docker login': denied: Your authorization token has expired. Reauthenticate and try again.. O que eu faço?

As imagens estão disponíveis publicamente no espelho da AWS ECR, para que você não precise ter credenciais para puxá-las.

Se você estiver recebendo esta mensagem, tente seguir as instruções sobre a documentação da AWS ECR.

Quando tento executar a ferramenta CLI da BotCity, recebo uma mensagem de erro dizendo Login failed. Check your internet connection, server availability or SERVER parameter in config.properties. O que eu faço?

Verifique se você forneceu a variável de ambiente do servidor correta. Se o URL do seu servidor for developers.botcity.dev, a variável de ambiente do servidor correta é developers.

Se a variável de ambiente SERVER estiver correta, verifique se também forneceu as variáveis de login e ambiente corretas.