Saltar para o conteúdo
🎉 Bem-vindo! Sinfonia by 27Devs é uma plataforma completa de orquestração de robôs, solicite já seu acesso.

Docker

Esta tela permite a criação de um novo bot a partir de uma imagem Docker. Em vez de enviar o código-fonte, você informa uma imagem pronta e o Sinfonia executa o container no Docker Host selecionado.

Importante

Bots do tipo Docker são um recurso premium, contratado à parte na plataforma. Depois da contratação, é preciso ter ao menos um Docker Host conectado para executar as imagens. Ainda não configurou? Siga o passo a passo em Agentes → Docker.

O que é Docker

O Docker é uma plataforma que empacota uma aplicação junto com tudo o que ela precisa para rodar (runtime, bibliotecas, dependências do sistema e configurações) em uma unidade chamada imagem. Quando a imagem é executada, ela vira um container: um processo isolado, que se comporta da mesma forma em qualquer máquina com Docker instalado.

TermoO que é
ImagemPacote imutável com o código e as dependências da automação. É gerada a partir de um Dockerfile.
ContainerUma imagem em execução, isolada do restante da máquina.
RegistryRepositório onde as imagens são armazenadas e distribuídas, como Docker Hub, GitHub Container Registry (GHCR) e Amazon ECR.
TagRótulo que identifica uma versão da imagem, como meu-bot:1.0.0.

Benefícios

  • Ambiente reproduzível: o bot roda com as mesmas versões de runtime e bibliotecas em que foi testado, sem depender do que está instalado na máquina.
  • Qualquer linguagem: a imagem leva o próprio runtime, então o bot não fica limitado às linguagens suportadas pelos tipos Script, Zip e Git.
  • Dependências de sistema incluídas: navegadores, drivers, pacotes do sistema operacional e ferramentas de linha de comando vão dentro da imagem.
  • Isolamento: cada execução roda em um container separado, sem conflito de dependências entre bots.
  • Integração com CI/CD: a mesma imagem gerada e testada no seu pipeline é a que roda em produção.

Requisitos da imagem

  • A imagem deve definir o comando de inicialização da automação com ENTRYPOINT ou CMD no Dockerfile.
  • A imagem deve ser compatível com a arquitetura do Docker Host (por exemplo, linux/amd64).
  • Ao usar um registry, o Docker Host precisa ter acesso de rede a ele.

Campos

CampoDescriçãoNotas
NomeNome do bot.Formato esperado: bot-xxx (exemplo: bot-123).
VersãoVersão do bot.Formato X.Y.Z (exemplo: 1.0.0).
Docker HostHost que deve executar o container.Selecione um dos hosts conectados. Se a lista estiver vazia, implante o agente seguindo Agentes → Docker.
Origem da imagemDefine de onde o Sinfonia obtém a imagem.Veja as três opções em Origem da imagem.
Parâmetros (Json)Parâmetros do bot em formato JSON.Exemplo: {"arg1": "1366", "arg2": "768"}
DescriçãoTexto livre para descrever a função e o propósito do bot.—

Origem da imagem

O formulário oferece três formas de informar a imagem:

OpçãoQuando usar
Imagem de um repositórioA imagem está em um registry público.
Imagem de um repositório com autenticaçãoA imagem está em um registry privado (Docker Hub, GHCR ou Amazon ECR).
Imagem de um arquivoA imagem não está em um registry e tem até 50 MB.

Imagem de um repositório

Use esta opção para imagens públicas, que podem ser baixadas sem login.

Docker image

  • Descrição: Caminho da imagem no registry, incluindo a tag.
  • Importante: Informe sempre uma tag de versão. Sem tag, o Docker assume latest. Como o Docker Host mantém em cache as imagens já baixadas, publique cada versão com uma tag nova: uma tag reutilizada não é baixada novamente.
  • Exemplos:
RegistryFormato
Docker Hubusuario/meu-bot:1.0.0
GHCRghcr.io/organizacao/meu-bot:1.0.0
Amazon ECR Publicpublic.ecr.aws/alias/meu-bot:1.0.0

Imagem de um repositório com autenticação

Use esta opção para imagens privadas. Registries privados exigem login antes do download da imagem: o Sinfonia usa as credenciais informadas para se autenticar no registry, da mesma forma que o comando docker login, e em seguida baixa a imagem.

Importante

As credenciais não são digitadas no formulário do bot. Cadastre o usuário e a senha antes, em Variáveis de Ambiente, e depois selecione essas variáveis na tela de criação do bot.

Para preparar as credenciais:

  1. Acesse Variáveis de Ambiente e clique em Nova variável.
  2. Crie uma variável para o usuário e outra para a senha (por exemplo, DOCKER_USER e DOCKER_PASSWORD), com os valores indicados na tabela abaixo para o seu registry.
  3. Marque o escopo Uso interno (token Git, token AWS...) e restrinja a visualização a Admins.
  4. Na tela de criação do bot, selecione essas variáveis nos campos de usuário e senha.

Docker image

  • Descrição: URL da imagem, incluindo o endereço do registry e a tag.

Dockerhub User (Access key if ECR)

  • Descrição: Seleciona a variável de ambiente que contém o usuário do registry. Para o Amazon ECR, a variável deve conter o Access Key ID.

Dockerhub Password (User token if GHCR, Secret key if ECR)

  • Descrição: Seleciona a variável de ambiente que contém a senha do registry. Para o GHCR, a variável deve conter o token do usuário. Para o Amazon ECR, a Secret Access Key.

Valor de cada variável conforme o registry:

RegistryDocker imageVariável de usuárioVariável de senha
Docker Hubusuario/meu-bot:1.0.0Usuário do Docker HubSenha ou token de acesso pessoal
GHCRghcr.io/organizacao/meu-bot:1.0.0Usuário do GitHubToken de acesso pessoal
Amazon ECR<conta>.dkr.ecr.<regiao>.amazonaws.com/meu-bot:1.0.0Access Key IDSecret Access Key

Atenção

Use credenciais dedicadas ao Sinfonia e com permissão somente de leitura. Evite a senha da sua conta pessoal ou chaves com acesso administrativo.

Docker Hub

O Docker Hub aceita a senha da conta, mas o recomendado é criar um token de acesso pessoal com permissão Read-only e usá-lo como valor da variável de senha. O token pode ser revogado a qualquer momento sem afetar a conta.

GitHub Container Registry (GHCR)

O GHCR não aceita a senha da conta do GitHub. Crie um personal access token (classic) com o escopo read:packages e use-o como valor da variável de senha, com o seu usuário do GitHub na variável de usuário.

Amazon ECR

O Amazon ECR não tem usuário e senha fixos. O login no registry é feito com um token temporário, válido por 12 horas, que a AWS emite a partir de credenciais IAM. Por isso as variáveis guardam o Access Key ID e a Secret Access Key: com elas, o token é obtido a cada autenticação, sem que você precise renová-lo manualmente.

Para configurar:

  1. Crie um usuário IAM dedicado ao Sinfonia.
  2. Anexe a política gerenciada AmazonEC2ContainerRegistryReadOnly, ou uma política própria com as permissões mínimas abaixo.
  3. Gere uma chave de acesso para esse usuário e cadastre o Access Key ID e a Secret Access Key como variáveis de ambiente no Sinfonia.
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "ecr:GetAuthorizationToken",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "ecr:BatchCheckLayerAvailability",
        "ecr:GetDownloadUrlForLayer",
        "ecr:BatchGetImage"
      ],
      "Resource": "arn:aws:ecr:<regiao>:<conta>:repository/meu-bot"
    }
  ]
}

Imagem de um arquivo

Use esta opção quando a imagem não está publicada em um registry. Você exporta a imagem para um arquivo na sua máquina e faz o upload pelo formulário.

Docker Image file (Max 50Mb)

  • Descrição: Upload do arquivo de imagem Docker.
  • Importante: O arquivo deve estar no formato .tar.gz ou .tgz e não pode exceder 50 MB.
  • Nota: O nome e a tag da imagem são lidos do próprio arquivo, por isso a imagem precisa ser exportada pela tag, e não pelo ID.

Como gerar o arquivo de imagem

  1. Na pasta do projeto, crie um Dockerfile. Exemplo para um bot em Python:

    FROM python:3.12-alpine
    
    WORKDIR /app
    
    COPY requirements.txt .
    RUN pip install --no-cache-dir -r requirements.txt
    
    COPY . .
    
    CMD ["python", "main.py"]
  2. Construa a imagem, informando a arquitetura do Docker Host:

    docker build --platform linux/amd64 -t meu-bot:1.0.0 .
  3. Exporte a imagem com o comando docker save e compacte o resultado com gzip, gerando um arquivo .tar.gz:

    docker save meu-bot:1.0.0 | gzip > meu-bot-1.0.0.tar.gz
  4. Confira o tamanho do arquivo gerado:

    ls -lh meu-bot-1.0.0.tar.gz
  5. No formulário, selecione Imagem de um arquivo e envie o arquivo .tar.gz.

Atenção

Use docker save, que exporta a imagem com camadas, tags e o comando de inicialização. O comando docker export gera o sistema de arquivos de um container e não produz uma imagem válida para upload.

Como reduzir o tamanho da imagem

Se o arquivo passar de 50 MB:

  • Use uma imagem base menor, como as variantes alpine ou slim.
  • Use multi-stage builds para deixar as ferramentas de compilação fora da imagem final.
  • Crie um arquivo .dockerignore para excluir .git, testes, caches e outros arquivos que não são usados na execução.
  • Instale dependências sem cache (por exemplo, pip install --no-cache-dir).

Dica

Se a imagem continuar acima do limite, publique-a em um registry e use a opção Imagem de um repositório com autenticação, que não tem a restrição de 50 MB do upload.

Última modificação em