diff --git a/examples/README.md b/examples/README.md deleted file mode 100644 index 11ac2d75..00000000 --- a/examples/README.md +++ /dev/null @@ -1,340 +0,0 @@ -# Dagger Examples - -All example commands should be executed in the `examples/` directory -in an up-to-date checkout of the [dagger repository](https://github.com/dagger/dagger). - -## Deploy a static page to S3 - -This example shows how to generate a simple HTML page and serve it from an S3 bucket. - -Components: - -- [Amazon S3](https://aws.amazon.com/s3/) for hosting - -1. Initialize a new workspace - -```sh -cd ./simple-s3 -dagger init -``` - -2. Create a new environment - -```sh -dagger new simple-s3 -cp *.cue ./.dagger/env/simple-s3/plan/ -``` - -3. Configure your AWS credentials - -```sh -dagger input secret awsConfig.accessKey MY_AWS_ACCESS_KEY -dagger input secret awsConfig.secretKey MY_AWS_SECRET_KEY -``` - -4. Specify the source code location - -```sh -dagger input dir source website -``` - -5. Deploy! - -```sh -dagger up -``` - -6. Check the URL - -```sh -curl -i $(dagger query url -f text) -``` - -## Deploy a simple React application - -This example shows how to deploy an example React Application. [Read the deployment plan](https://github.com/dagger/dagger/tree/main/examples/react) - -Audience: Javascript developers looking to deploy their application. - -Components: - -- [Netlify](https://netlify.com) for application hosting -- [Yarn](https://yarnpkg.com) for building -- [Github](https://github.com) for source code hosting -- [React-Todo-App](https://github.com/kabirbaidhya/react-todo-app) by Kabir Baidhya as a sample application. - -1. Initialize a new workspace - -```sh -cd ./react -dagger init -``` - -2. Create a new environment - -```sh -dagger new react -cp *.cue ./.dagger/env/react/plan/ -``` - -3. Configure the deployment with your Netlify access token. - You can create new tokens from the [Netlify dashboard](https://app.netlify.com/user/applications/personal). - -```sh -dagger input secret www.account.token MY_TOKEN -``` - -_NOTE: there is a dedicated command for encrypted secret inputs, but it is -not yet implemented. Coming soon!_ - -4. Deploy! - -```sh -dagger up -``` - -## Deploy a complete JAMstack app - -This example shows how to deploy a complete app with a backend, a database and a frontend. - -This app assumes the following infrastructure is available: - -- AWS ECS Cluster -- AWS ALB with a TLS certificate -- AWS RDS Instance (MySQL or PostgreSQL) -- AWS ECR repository - -1. Initialize a new workspace - -```sh -cd ./jamstack -dagger init -``` - -2. Create a new environment - -```sh -dagger new jamstack -cp *.cue ./.dagger/env/jamstack/plan/ -``` - -3. Edit the inputs - -Edit the file `inputs.yaml` and review all values to match to your infrastructure. - -Add the inputs to the deployment: - -```sh -dagger input yaml "" -f ./inputs.yaml -``` - -4. Deploy! - -```sh -dagger up -``` - -The example `inputs.yaml` from the `./examples/jamstack` directory takes the source code from a remote git repository, but you can remove this from the file and instead points to a local source code: - -```sh -dagger input dir backend.source ./my/local/backend/code -``` - -And the same mechanism applies for every single key in this file. - -5. Get the App URL - -```sh -dagger query url -``` - -## Provision a Kubernetes cluster on AWS - -This example shows how to provision a new Kubernetes cluster on AWS, and configure your `kubectl` client to use it. [Read the deployment plan](https://github.com/dagger/dagger/tree/main/examples/kubernetes-aws) - -Audience: infrastructure teams looking to provisioning kubernetes clusters as part of automated CICD pipelines. - -Components: - -- [Amazon EKS](https://aws.amazon.com/eks) for Kubernetes hosting -- [Amazon CloudFormation](https://aws.amazon.com/cloudformation) for infrastructure provisioning -- [Kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl) as kubernetes client - -1. Initialize a new workspace - -```sh -cd ./kubernetes-aws -dagger init -``` - -2. Create a new environment - -```sh -dagger new kubernetes-aws -cp *.cue ./.dagger/env/kubernetes-aws/plan/ -``` - -3. Configure the deployment with your AWS credentials - -```sh -dagger input secret awsConfig.accessKey MY_AWS_ACCESS_KEY -dagger input secret awsConfig.secretKey MY_AWS_SECRET_KEY -``` - -4. Deploy! - -```sh -dagger up -``` - -5. Export the generated kubectl config - -```sh -dagger query kubeconfig.kubeconfig | jq . > kubeconfig -``` - -## Add HTTP monitoring to your application - -This example shows how to implement a robust HTTP(s) monitoring service on top of AWS. [Read the deployment plan](https://github.com/dagger/dagger/tree/main/examples/monitoring). - -Audience: application team looking to improve the reliability of their application. - -Components: - -- [Amazon Cloudwatch Synthetics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries.html) for hosting the monitoring scripts -- [Amazon CloudFormation](https://aws.amazon.com/cloudformation) for infrastructure provisioning - -1. Initialize a new workspace - -```sh -cd ./monitoring -dagger init -``` - -2. Create a new environment - -```sh -dagger new monitoring -cp *.cue ./.dagger/env/monitoring/plan/ -``` - -2. Configure the deployment with your AWS credentials - -```sh -dagger input text awsConfig.accessKey MY_AWS_ACCESS_KEY -dagger input text awsConfig.secretKey MY_AWS_SECRET_KEY -``` - -3. Configure the monitoring parameters - -```sh -dagger input text website https://MYWEBSITE.TLD -``` - -```sh -dagger input text email my_email@my_domain.tld -``` - -4. Deploy! - -```sh -dagger up -``` - -## Deploy an application to your Kubernetes cluster - -This example shows two different ways to deploy an application to an existing Kubernetes cluster: with and without a Helm chart. Read the deployment plan](https://github.com/dagger/dagger/tree/main/examples/kubernetes-app) - -NOTE: this example requires an EKS cluster to allow authentication with your AWS credentials; but can easily be adapter to deploy to any Kubernetes cluster. - -Components: - -- [Amazon EKS](https://aws.amazon.com/eks) for Kubernetes hosting -- [Kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl) as kubernetes client -- [Helm](https://helm.sh) to manage kubernetes configuration (optional) - -How to run: - -1. Initialize a new workspace - -```sh -cd ./kubernetes-app -dagger init -``` - -2. Create a new environment - -```sh -dagger new kubernetes-app -cp *.cue ./.dagger/env/kubernetes-app/plan/ -``` - -3. Configure the deployment with your AWS credentials - -```sh -dagger input secret awsConfig.accessKey MY_AWS_ACCESS_KEY -dagger input secret awsConfig.secretKey MY_AWS_SECRET_KEY -``` - -4. Configure the EKS cluster to deploy to - -Note: if you have run the `kubernetes-aws` example, you may skip this step. - -```sh -dagger input text cluster.clusterName MY_CLUSTER_NAME -``` - -5. Load the Helm chart - -```sh -dagger input dir helmChart.chart ./testdata/mychart -``` - -6. Deploy! - -```sh -dagger up -``` - -## Deploy an application to GCP Cloud Run - -This example shows how to deploy an application to GCP Cloud Run. Read the deployment [plan](https://github.com/dagger/dagger/tree/main/examples/cloudrun-app) - -NOTE: this example requires the right GCP IAM permissions: `https://cloud.google.com/run/docs/reference/iam/roles#additional-configuration` - -Components: - -- [Cloud Run](https://cloud.google.com/run) - -How to run: - -1. Initialize a new workspace - -```sh -cd ./cloudrun-app -dagger init -``` - -2. Create a new environment - -```sh -dagger new cloudrun-app -cp main.cue ./.dagger/env/cloudrun-app/plan/ -``` - -3. Configure the Cloud Run service - -```sh -dagger input text serviceName MY_APP_NAME -dagger input text image MY_GCR_IMAGE_NAME - -dagger input text gcpConfig.project MY_GCP_PROJECT -dagger input text gcpConfig.region MY_GCP_REGION -dagger input secret gcpConfig.serviceKey -f MY_GCP_SERVICE_KEY_FILE -``` - -4. Deploy! - -```sh -dagger up -``` diff --git a/examples/cloudrun-app/go-http-server/.dockerignore b/examples/cloudrun-app/go-http-server/.dockerignore deleted file mode 100644 index 4cc30b02..00000000 --- a/examples/cloudrun-app/go-http-server/.dockerignore +++ /dev/null @@ -1,13 +0,0 @@ -# The .dockerignore file excludes files from the container build process. -# -# https://docs.docker.com/engine/reference/builder/#dockerignore-file - -# Exclude locally vendored dependencies. -vendor/ - -# Exclude "build-time" ignore files. -.dockerignore -.gcloudignore - -# Exclude git history and configuration. -.gitignore diff --git a/examples/cloudrun-app/go-http-server/Dockerfile b/examples/cloudrun-app/go-http-server/Dockerfile deleted file mode 100644 index 21e1f572..00000000 --- a/examples/cloudrun-app/go-http-server/Dockerfile +++ /dev/null @@ -1,33 +0,0 @@ -# Use the offical golang image to create a binary. -# This is based on Debian and sets the GOPATH to /go. -# https://hub.docker.com/_/golang -FROM golang:1.16-buster as builder - -# Create and change to the app directory. -WORKDIR /app - -# Retrieve application dependencies. -# This allows the container build to reuse cached dependencies. -# Expecting to copy go.mod and if present go.sum. -COPY go.* ./ -RUN go mod download - -# Copy local code to the container image. -COPY . ./ - -# Build the binary. -RUN go build -v -o server - -# Use the official Debian slim image for a lean production container. -# https://hub.docker.com/_/debian -# https://docs.docker.com/develop/develop-images/multistage-build/#use-multi-stage-builds -FROM debian:buster-slim -RUN set -x && apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \ - ca-certificates && \ - rm -rf /var/lib/apt/lists/* - -# Copy the binary to the production image from the builder stage. -COPY --from=builder /app/server /app/server - -# Run the web service on container startup. -CMD ["/app/server"] diff --git a/examples/cloudrun-app/go-http-server/go.mod b/examples/cloudrun-app/go-http-server/go.mod deleted file mode 100644 index c7f4692c..00000000 --- a/examples/cloudrun-app/go-http-server/go.mod +++ /dev/null @@ -1,3 +0,0 @@ -module github.com/dagger-cloud-run-example - -go 1.16 diff --git a/examples/cloudrun-app/go-http-server/main.go b/examples/cloudrun-app/go-http-server/main.go deleted file mode 100644 index ced0a060..00000000 --- a/examples/cloudrun-app/go-http-server/main.go +++ /dev/null @@ -1,35 +0,0 @@ -// Sample run-helloworld is a minimal Cloud Run service. -package main - -import ( - "fmt" - "log" - "net/http" - "os" -) - -func main() { - log.Print("starting server...") - http.HandleFunc("/", handler) - - // Determine port for HTTP service. - port := os.Getenv("PORT") - if port == "" { - port = "8080" - log.Printf("defaulting to port %s", port) - } - - // Start HTTP server. - log.Printf("listening on port %s", port) - if err := http.ListenAndServe(":"+port, nil); err != nil { - log.Fatal(err) - } -} - -func handler(w http.ResponseWriter, r *http.Request) { - name := os.Getenv("NAME") - if name == "" { - name = "World" - } - fmt.Fprintf(w, "Hello %s!\n", name) -}