Les sites statiques et les cadriciels standards (Next.js, Astro, Vite) n'exigent aucun changement — Canner s'en occupe. Si votre application exécute son propre serveur :
Go
Un go.mod à la racine déclenche un build Go : go build produit un binaire statique exécuté directement. Lisez le port depuis l’environnement :
package main
import (
"fmt"
"net/http"
"os"
)
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "ok")
})
http.ListenAndServe(":"+os.Getenv("PORT"), nil)
}Ruby
Un Gemfile déclenche Bundler avec les gemmes installées dans le projet. Les applications Rails démarrent avec rails server, les applications Rack (config.ru) avec rackup, et Sinatra avec le fichier d’entrée. Puma et les autres gemmes natives se compilent sans problème à l’installation.
PHP
Un composer.json (ou un simple index.php) se déploie en PHP 8.2. Laravel démarre avec artisan serve; tout le reste est servi par le serveur intégré de PHP depuis public/ ou la racine du projet. Les dépendances Composer s’installent automatiquement.
Rust
Un Cargo.toml compile avec cargo build --release et exécute le binaire de production. Les builds Rust sont exigeants en calcul : ils demandent un forfait payant (Live et plus — Forfaits et limites). Axum, Actix et Rocket fonctionnent — liez-vous à la variable PORT.
Java
Un pom.xml compile avec Maven; un build.gradle ou build.gradle.kts avec un gradlew commité compile avec Gradle (pas de wrapper, pas de build — Canner n’installe pas de Gradle système). Le JDK est choisi selon la version déclarée (maven.compiler.release, sourceCompatibility, ou un toolchain Gradle) — Java 17, 21 et 25 sont disponibles, 21 par défaut. Les applications Spring Boot ne demandent aucune configuration additionnelle : SERVER_PORT et SERVER_ADDRESS sont définies pour vous via sa liaison d’environnement souple; tout le reste peut lire la variable PORT.
BoxLang
BoxLang est un langage JVM moderne, compatible CFML (le successeur de ColdFusion / Lucee). Un box.json, un server.json, un Application.bx / Application.cfc, ou un gabarit .bxm / .cfm à la racine sert d’indice. Aucune étape de compilation : le MiniServer BoxLang sert votre répertoire source et compile les gabarits à la volée. Les modules déclarés dans box.json s’installent automatiquement depuis ForgeBox. Pour une base de code ColdFusion ou Lucee — des fichiers .cfm / .cfc ou un Application.cfc — Canner installe aussi automatiquement la couche bx-compat-cfml, qui rétablit les comportements hérités de l’environnement (lettres des masques de date, signatures des fonctions intégrées, alias de portée cfusion) sur lesquels repose une migration. Le MiniServer lit la variable PORT et fait confiance aux en-têtes de proxy de Canner, donc une source de données, les sessions et cgi.remote_addr fonctionnent derrière la périphérie. BoxLang s’exécute sur Java 21 et demande un forfait payant (Live et plus — Forfaits et limites).
Vous déplacez une application ColdFusion ou Lucee existante? Déployer ColdFusion et CFML sur Canner détaille la migration.