Comprobar un 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
}
}
Imágenes Docker
Comprobar un Dockerfile
Comprueba un Dockerfile y la lista de archivos de un contexto de build antes de construir. No crea nada.
POST
/
v1
/
images
/
check
Comprobar un 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
}
}
La misma comprobación se vuelve a ejecutar al crear o reconstruir una imagen, así que un resultado limpio aquí no la sustituye. Una comprobación no cuenta para ningún límite. Necesita el ámbito
images:read cuando se llama con una clave de API.
string
requerido
El contenido del
Dockerfile.string[]
requerido
Las rutas de los archivos del contexto de build, relativas a su raíz.
Respuesta
object
Códigos de hallazgo
| Código | Tipo | Significado |
|---|---|---|
missing_dockerfile | Rechazo | No hay ningún archivo llamado exactamente Dockerfile en la raíz del contexto. |
syntax_frontend | Rechazo | Una directiva # syntax= apunta a algo distinto del frontend oficial de Dockerfile. |
run_security_insecure | Rechazo | RUN --security=insecure. |
run_network_host | Rechazo | RUN --network=host. |
mount_ssh | Rechazo | --mount=type=ssh. |
mount_secret | Rechazo | --mount=type=secret. |
workdir_app | Aviso | WORKDIR en /app o por debajo. /app es el disco persistente de la aplicación, así que lo que la imagen coloca ahí queda oculto por el montaje. |
env_file_in_context | Aviso | Archivos .env* en el contexto. Se eliminan antes del build; sus claves se convierten en variables de la aplicación. |
copy_env_file | Aviso | COPY o ADD de un archivo .env. El archivo no está en el contexto de build, así que el build falla en esa línea. |
volume_outside_app | Aviso | VOLUME fuera de /app. En ejecución, esa ruta es una carpeta temporal de 64 MB que se borra en cada reinicio; solo /app conserva los datos. |
volume_refused | Rechazo | VOLUME en /app o por debajo, o con una ruta relativa. /app ya es el disco persistente de la aplicación. |
{
"response": {
"refusals": [{ "code": "run_network_host", "line": 7 }],
"warnings": [{ "code": "workdir_app", "line": 3 }],
"suggested_port": 3000
}
}
Respuestas de error
string
El código de error que indica el motivo del fallo. Valores posibles:
API_KEY_SCOPE_DENIED: La clave de API no tiene el ámbito requerido (403).VALIDATION_ERROR: El cuerpo no superó la validación (400).INTERNAL_SERVER_ERROR: Fallo inesperado (500).
{
"code": "VALIDATION_ERROR",
"path": "dockerfile"
}
Última modificación el 28 de octubre de 2026