feat: add examples
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
# kuber derives the Kubernetes namespace and built image names from the current
|
||||
# directory. Run kuber from the repository root that contains this file.
|
||||
|
||||
services:
|
||||
app:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile
|
||||
target: runner
|
||||
# NEXT_PUBLIC_* values are embedded by `next build`, so pass them as
|
||||
# build args only when your Dockerfile declares matching ARG/ENV entries.
|
||||
# args:
|
||||
# NEXT_PUBLIC_API_URL: https://api.example.com
|
||||
|
||||
# Use `image` instead of `build` when an external registry already owns the
|
||||
# image lifecycle. A service should normally use one approach or the other.
|
||||
# image: registry.example.com/team/app:latest
|
||||
|
||||
# If the app has a .env file, uncomment this. kuber reads it locally and
|
||||
# creates an `app-env` Kubernetes Secret; Docker never copies it.
|
||||
# env_file:
|
||||
# - .env
|
||||
|
||||
environment:
|
||||
NODE_ENV: production
|
||||
HOSTNAME: 0.0.0.0
|
||||
PORT: "3000"
|
||||
|
||||
# Application data services are declared with kuber pseudo-volumes. They
|
||||
# inject credentials into app-env but do not mount a filesystem. Uncomment
|
||||
# `volumes` and only the services this application needs.
|
||||
# volumes:
|
||||
# # Many applications need Postgres. This injects DATABASE_URL.
|
||||
# - postgresql:app
|
||||
# # Some applications also need object storage. This provisions an S3
|
||||
# # key named app-assets and bucket named assets, then injects AWS/S3 env.
|
||||
# - s3:app-assets/assets
|
||||
#
|
||||
# # Filesystem persistence is uncommon for Next.js. Prefer Postgres or S3
|
||||
# # unless the application specifically requires POSIX file access.
|
||||
# # A file bind becomes a ConfigMap.
|
||||
# - ./config/app.json:/app/config/app.json:ro
|
||||
# # A directory bind or named volume becomes a PVC.
|
||||
# - ./uploads:/app/uploads
|
||||
# - cache(5Gi on 1 fast):/app/.next/cache
|
||||
|
||||
ports:
|
||||
# A hostname creates an Ingress that routes to container port 3000.
|
||||
- app.example.com:3000
|
||||
|
||||
# Other supported routing forms:
|
||||
# - "*.example.com:3000"
|
||||
# - admin.example.com:3000:protected
|
||||
# - admin.example.com:3000:protected(/admin,/api/internal)
|
||||
|
||||
deploy:
|
||||
replicas: 1
|
||||
|
||||
# !! You probably will not need this section in most deployments. !!
|
||||
# These Kubernetes container fields are merged into the generated
|
||||
# Deployment. TCP probes work without requiring a dedicated health route.
|
||||
x-container:
|
||||
readinessProbe:
|
||||
tcpSocket:
|
||||
port: 3000
|
||||
initialDelaySeconds: 5
|
||||
periodSeconds: 10
|
||||
livenessProbe:
|
||||
tcpSocket:
|
||||
port: 3000
|
||||
initialDelaySeconds: 15
|
||||
periodSeconds: 20
|
||||
resources:
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 128Mi
|
||||
limits:
|
||||
cpu: "1"
|
||||
memory: 512Mi
|
||||
securityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
capabilities:
|
||||
drop: [ALL]
|
||||
runAsGroup: 1001
|
||||
runAsNonRoot: true
|
||||
runAsUser: 1001
|
||||
seccompProfile:
|
||||
type: RuntimeDefault
|
||||
Reference in New Issue
Block a user