Verificar Dockerfile
curl --request POST \
--url https://api.vertracloud.app/v1/images/check \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"dockerfile": "<string>",
"files": [
"<string>"
]
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({dockerfile: '<string>', files: ['<string>']})
};
fetch('https://api.vertracloud.app/v1/images/check', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.vertracloud.app/v1/images/check"
payload = {
"dockerfile": "<string>",
"files": ["<string>"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.vertracloud.app/v1/images/check"
payload := strings.NewReader("{\n \"dockerfile\": \"<string>\",\n \"files\": [\n \"<string>\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"response": {
"refusals": [{ "code": "run_network_host", "line": 7 }],
"warnings": [{ "code": "workdir_app", "line": 3 }],
"suggested_port": 3000
}
}
Imagens Docker
Verificar Dockerfile
Verifica um Dockerfile e a lista de arquivos de um contexto de build antes do build. Não cria nada.
POST
/
v1
/
images
/
check
Verificar Dockerfile
curl --request POST \
--url https://api.vertracloud.app/v1/images/check \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"dockerfile": "<string>",
"files": [
"<string>"
]
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({dockerfile: '<string>', files: ['<string>']})
};
fetch('https://api.vertracloud.app/v1/images/check', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.vertracloud.app/v1/images/check"
payload = {
"dockerfile": "<string>",
"files": ["<string>"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.vertracloud.app/v1/images/check"
payload := strings.NewReader("{\n \"dockerfile\": \"<string>\",\n \"files\": [\n \"<string>\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"response": {
"refusals": [{ "code": "run_network_host", "line": 7 }],
"warnings": [{ "code": "workdir_app", "line": 3 }],
"suggested_port": 3000
}
}
A mesma verificação roda de novo quando você cria ou refaz o build de uma imagem, então um resultado limpo aqui não a substitui. Uma verificação não conta para nenhum limite. Exige o escopo
images:read quando chamada com uma chave de API.
string
obrigatório
O conteúdo do
Dockerfile.string[]
obrigatório
Os caminhos dos arquivos do contexto de build, relativos à raiz dele.
Resposta
object
Códigos dos achados
| Código | Tipo | Significado |
|---|---|---|
missing_dockerfile | Recusa | Não existe um arquivo chamado exatamente Dockerfile na raiz do contexto. |
syntax_frontend | Recusa | Uma diretiva # syntax= aponta para algo diferente do frontend oficial do Dockerfile. |
run_security_insecure | Recusa | RUN --security=insecure. |
run_network_host | Recusa | RUN --network=host. |
mount_ssh | Recusa | --mount=type=ssh. |
mount_secret | Recusa | --mount=type=secret. |
workdir_app | Aviso | WORKDIR em /app ou abaixo. /app é o disco persistente da aplicação, então o que a imagem coloca ali fica oculto pelo mount. |
env_file_in_context | Aviso | Arquivos .env* no contexto. Eles são removidos antes do build; as chaves deles viram variáveis da aplicação. |
copy_env_file | Aviso | COPY ou ADD de um arquivo .env. O arquivo não está no contexto de build, então o build falha nessa linha. |
volume_outside_app | Aviso | VOLUME fora de /app. Em tempo de execução, esse caminho é uma pasta temporária de 64 MB, apagada a cada restart; só /app mantém dados. |
volume_refused | Recusa | VOLUME em /app ou abaixo, ou com caminho relativo. /app já é o disco persistente da aplicação. |
{
"response": {
"refusals": [{ "code": "run_network_host", "line": 7 }],
"warnings": [{ "code": "workdir_app", "line": 3 }],
"suggested_port": 3000
}
}
Respostas de erro
string
O código de erro que indica o motivo da falha. Valores possíveis:
API_KEY_SCOPE_DENIED: A chave de API não tem o escopo exigido (403).VALIDATION_ERROR: O body falhou na validação (400).INTERNAL_SERVER_ERROR: Falha inesperada (500).
{
"code": "VALIDATION_ERROR",
"path": "dockerfile"
}
Última modificação em 28 de outubro de 2026