Status : IMPLEMENTEE
# conf.prod.gouroubleu.yml
name: "mon-projet"
# Type d'image prédéfini (node, bun, rust) ou custom
type: "node" # node | bun | rust | custom
# Si custom, spécifier le Dockerfile
dockerfile: "./Dockerfile" # Seulement si type: custom
# Exposition
domain: "mon-projet.gouroubleu.com"
port: 3000
# Stockage (bind mounts)
storage:
nfs: # Sur /mnt/stock_36to/data/projects/{name}/
- data
- uploads
local: # Sur /opt/projects/{name}/
- static
- logs
ram: # tmpfs (données jetables)
- cache: 256m
# Variables d'environnement
env:
NODE_ENV: "production"
DATABASE_URL: "postgres://..."
API_KEY: "${SECRET_API_KEY}" # Peut référencer des secrets
# Script post-build
post_build: "./scripts/post-build.sh"
name: "api-users"
type: "node"
domain: "api-users.gouroubleu.com"
port: 3000
storage:
nfs:
- data
env:
NODE_ENV: "production"
name: "web-app"
type: "bun"
domain: "app.gouroubleu.com"
port: 8080
storage:
nfs:
- uploads
local:
- static
ram:
- cache: 512m
env:
BUN_ENV: "production"
post_build: "./scripts/migrate-db.sh"
name: "backend-rust"
type: "rust"
domain: "api.gouroubleu.com"
port: 8000
storage:
nfs:
- data
env:
RUST_LOG: "info"
name: "legacy-app"
type: "custom"
dockerfile: "./docker/Dockerfile.prod"
domain: "legacy.gouroubleu.com"
port: 4000
storage:
nfs:
- data
env:
APP_ENV: "production"
post_build: "./scripts/init.sh"
| Type | Image de base | Build | Commande par défaut |
|---|---|---|---|
node |
node:lts-alpine | npm install && npm run build | npm start |
bun |
oven/bun:latest | bun install && bun run build | bun start |
rust |
rust:alpine | cargo build --release | ./target/release/{name} |
custom |
Ton Dockerfile | Selon Dockerfile | Selon Dockerfile |