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 n’est pas encore pris en charge. Un projet pom.xml ou build.gradle échoue avec un message unsupported_runtime clair plutôt que de déployer quelque chose de cassé. Écrivez-nous à hello@canner.ca si vous en avez besoin — la demande fait bouger la feuille de route.