> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ambarks.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Runtimes

> Linguagens e formatos que o AmbarksCloud consegue publicar automaticamente.

# <Icon icon="cloud" color="#0516ee" size={30} /> Runtimes suportados

Quando seu projeto não tem Dockerfile, o AmbarksCloud tenta preparar o deploy usando o runtime escolhido no dashboard (ou detectado pelos arquivos do projeto).

## Tabela de runtimes

| Runtime       | Como costuma ser detectado | Porta comum | Comando padrão (exemplo)        |
| ------------- | -------------------------- | ----------- | ------------------------------- |
| Node.js       | `package.json`             | `3000`      | `npm start`                     |
| Python        | runtime `python`           | `8000`      | `python main.py`                |
| Rust          | runtime `rust`             | `8080`      | `cargo run --release`           |
| PHP           | runtime `php`              | `8000`      | `php -S 0.0.0.0:8000 -t public` |
| Site estático | `index.html`               | `80`        | servidor estático               |

## Versões de Node/Python (como confirmar)

Quando o AmbarksCloud precisa gerar um Dockerfile automaticamente (porque não existe um `Dockerfile` no projeto), o backend usa as imagens base abaixo:

| Runtime | Imagem base        |
| ------- | ------------------ |
| Node.js | `node:22-alpine`   |
| Python  | `python:3.11-slim` |
| PHP     | `php:8.2-cli`      |

Se você precisa fixar outra versão (ou instalar pacotes do sistema), prefira **Dockerfile**.

Para confirmar o que está rodando no seu container, você pode imprimir versão no start:

* Verifique os logs de deploy (geralmente mostram a versão do runtime).
* Se necessário, adicione um comando que imprima versão no início do start, por exemplo:
  * Node.js: `node -v`
  * Python: `python --version`

## Node.js

Tenha um `package.json` com script `start`:

```json theme={null}
{
  "scripts": {
    "start": "node server.js",
    "build": "vite build"
  }
}
```

Se precisar rodar build antes do start, configure `ambarks.json`.

## Python

O padrão espera um arquivo `main.py`:

```text theme={null}
python-app/
  main.py
  requirements.txt
```

Para Flask, FastAPI ou outro comando, use `ambarks.json`.

## Rust

Inclua `Cargo.toml` e mantenha o comando de execução compatível com `cargo run --release`, ou defina outro comando em `ambarks.json`.

## PHP

O padrão publica usando a pasta `public`. Se seu projeto usa outra pasta ou framework com comando específico, prefira Dockerfile.

## Site estático

Projetos com `index.html` podem ser publicados como site estático. Para projetos com build (Vite, Astro etc.), use `ambarks.json` para gerar a pasta final ou Dockerfile para controlar o processo.

## Quando escolher Dockerfile

Use Dockerfile quando:

* O projeto precisa instalar pacotes do sistema.
* Há múltiplos processos ou comandos complexos.
* O runtime automático não cobre sua linguagem.
* Você precisa controlar versões, usuário, pastas ou binários.

## Links relacionados

* [Guias por stack](/guias/visao-geral)
* [Como usar ambarks.json](/projetos/ambarks-json)
* [Dockerfile personalizado](/projetos/dockerfile)
* [Deploy via ZIP](/projetos/deploy-zip)
