Deploy YAML — örnekler
Kopyala-yapıştır başlangıç noktaları. Herhangi birini pdctl validate <file> ile
doğrula.
Minimal statik site
En küçük geçerli manifest — mevcut bir sunucuda tek statik site; DNS, SSL veya env yok.
apiVersion: podmaker.sh/v1alphakind: Sitemetadata: name: hellotargets: - server: demo-01source: type: git repo: https://github.com/podmaker/hello-static.gitruntime: type: staticVault + blue-green ile Node fullstack
Cloudflare ile özel domain, Let’s Encrypt, vault’tan çekilen DB URL ve session secret, bir pre-deploy migration hook’u ve açılan firewall portları.
apiVersion: podmaker.sh/v1alphakind: Sitemetadata: name: acme-web workspace: acme tags: [production, web, eu]targets: - server: prod-eu-web-01source: type: git repo: git@github.com:acme/web.git branch: mainruntime: type: node version: "20" package_manager: pnpm build: command: pnpm install --frozen-lockfile && pnpm build output_dir: dist hosted: true start: command: node server.js port: 3000 healthcheck: /healthzdomains: - hostname: acme.com dns: { provider: cloudflare, proxy: true } ssl: { provider: letsencrypt, challenge: http-01 }env: NODE_ENV: production DATABASE_URL: { from_vault: secret/acme/webdb#url } SESSION_SECRET: { from_vault: secret/acme/web#session }deploy: strategy: blue-green rollback_on_failure: true hooks: pre_deploy: ["./scripts/migrate.sh"] health: timeout: 90s retries: 5firewall: inbound: - { port: 80, source: "0.0.0.0/0" } - { port: 443, source: "0.0.0.0/0" }Önceden build edilmiş container image
Başka yerde build edilmiş image, web + eu etiketli her sunucuya deploy,
recreate stratejisi, podmaker’da build adımı yok.
apiVersion: podmaker.sh/v1alphakind: Sitemetadata: name: api workspace: acmetargets: - server_selector: tags: [web, eu] min: 2source: type: image image: registry.podmaker.sh/acme/api:v1.4.2runtime: type: container start: port: 8080 healthcheck: /healthzdomains: - hostname: api.acme.com ssl: { challenge: http-01 }env: LOG_LEVEL: info DATABASE_URL: { from_vault: secret/acme/api#db_url }deploy: strategy: recreateÇok-component stack
İki component artı paylaşılan Postgres ve Redis.
apiVersion: podmaker.sh/v1alphakind: Stackmetadata: name: acme-platformstack: components: - name: web source: { type: git, repo: git@github.com:acme/web.git } runtime: { type: node, version: "20", start: { port: 3000 } } domains: [{ hostname: acme.com }] depends_on: [api] - name: api source: { type: image, image: registry.podmaker.sh/acme/api:v1.4.2 } runtime: { type: container, start: { port: 8080 } } env: DATABASE_URL: { from_vault: secret/acme/api#db_url } shared_services: database: { engine: postgres, version: "16", plan: small } cache: { engine: redis, version: "7" }