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.
| Termo | O que é |
|---|---|
| Imagem | Pacote imutável com o código e as dependências da automação. É gerada a partir de um Dockerfile. |
| Container | Uma imagem em execução, isolada do restante da máquina. |
| Registry | Repositório onde as imagens são armazenadas e distribuídas, como Docker Hub, GitHub Container Registry (GHCR) e Amazon ECR. |
| Tag | Ró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
ENTRYPOINTouCMDnoDockerfile. - 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
| Campo | Descrição | Notas |
|---|---|---|
| Nome | Nome do bot. | Formato esperado: bot-xxx (exemplo: bot-123). |
| Versão | Versão do bot. | Formato X.Y.Z (exemplo: 1.0.0). |
| Docker Host | Host que deve executar o container. | Selecione um dos hosts conectados. Se a lista estiver vazia, implante o agente seguindo Agentes → Docker. |
| Origem da imagem | Define 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ção | Texto 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ção | Quando usar |
|---|---|
| Imagem de um repositório | A imagem está em um registry público. |
| Imagem de um repositório com autenticação | A imagem está em um registry privado (Docker Hub, GHCR ou Amazon ECR). |
| Imagem de um arquivo | A 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:
| Registry | Formato |
|---|---|
| Docker Hub | usuario/meu-bot:1.0.0 |
| GHCR | ghcr.io/organizacao/meu-bot:1.0.0 |
| Amazon ECR Public | public.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:
- Acesse Variáveis de Ambiente e clique em
Nova variável. - Crie uma variável para o usuário e outra para a senha (por exemplo,
DOCKER_USEReDOCKER_PASSWORD), com os valores indicados na tabela abaixo para o seu registry. - Marque o escopo
Uso interno (token Git, token AWS...)e restrinja a visualização aAdmins. - 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:
| Registry | Docker image | Variável de usuário | Variável de senha |
|---|---|---|---|
| Docker Hub | usuario/meu-bot:1.0.0 | Usuário do Docker Hub | Senha ou token de acesso pessoal |
| GHCR | ghcr.io/organizacao/meu-bot:1.0.0 | Usuário do GitHub | Token de acesso pessoal |
| Amazon ECR | <conta>.dkr.ecr.<regiao>.amazonaws.com/meu-bot:1.0.0 | Access Key ID | Secret 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:
- Crie um usuário IAM dedicado ao Sinfonia.
- Anexe a política gerenciada
AmazonEC2ContainerRegistryReadOnly, ou uma política própria com as permissões mínimas abaixo. - 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"
}
]
}- Autenticação em registries privados do Amazon ECR
- Políticas gerenciadas da AWS para o Amazon ECR
- Gerenciar chaves de acesso de usuários IAM
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.gzou.tgze 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
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"]Construa a imagem, informando a arquitetura do Docker Host:
docker build --platform linux/amd64 -t meu-bot:1.0.0 .Exporte a imagem com o comando
docker savee compacte o resultado comgzip, gerando um arquivo.tar.gz:docker save meu-bot:1.0.0 | gzip > meu-bot-1.0.0.tar.gzConfira o tamanho do arquivo gerado:
ls -lh meu-bot-1.0.0.tar.gzNo formulário, selecione
Imagem de um arquivoe 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
alpineouslim. - Use multi-stage builds para deixar as ferramentas de compilação fora da imagem final.
- Crie um arquivo
.dockerignorepara 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.