9690981991
Signed-off-by: Solomon Hykes <solomon@dagger.io>
112 lines
3.8 KiB
Markdown
112 lines
3.8 KiB
Markdown
---
|
|
slug: /learn/101-basics
|
|
---
|
|
|
|
# Dagger 101: basic usage
|
|
|
|
In this guide, you will learn the basics of Dagger by interacting with a pre-configured environment.
|
|
Then you will move on to creating your own environment from scratch.
|
|
|
|
Our pre-configured environment deploys a simple [React](https://en.wikipedia.org/wiki/React_(JavaScript_library))
|
|
application to a special hosting environment created and managed by us, the Dagger team for the purpose of this tutorial.
|
|
This will allow you to deploy something "real" right away, without having to configure your own infrastructure first.
|
|
|
|
In later guides, you will learn how to configure Dagger to deploy to your own infrastructure. And, for advanced users,
|
|
how to share access to your infrastructure in the same way that we are sharing access to ours now.
|
|
|
|
## Before we start
|
|
|
|
First, you'll need to make sure [you have installed dagger on your local machine](/install).
|
|
|
|
## Let's deploy our first application
|
|
|
|
**Step 1**: Clone the example repository
|
|
|
|
```sh
|
|
git clone https://github.com/dagger/examples.git
|
|
```
|
|
|
|
**Step 2**: Go the todoapp directory
|
|
|
|
`todoapp` is a simple Todo-list application written in Javascript using [React](https://reactjs.org/).
|
|
|
|
Go to the app directory:
|
|
|
|
```sh
|
|
cd ./examples/todoapp
|
|
```
|
|
|
|
**Step 3**: Decrypt the inputs
|
|
|
|
The example app contains encrypted secrets and other pre-configured inputs, here is how to decrypt them:
|
|
|
|
```sh
|
|
dagger input list || curl -sfL https://releases.dagger.io/examples/key.txt >> ~/.config/dagger/keys.txt
|
|
```
|
|
|
|
**Step 4**: Deploy!
|
|
|
|
```sh
|
|
dagger up
|
|
```
|
|
|
|
At the end of the deploy, you should see a list of outputs. There is one that is named `url`. This is the URL where our app has been deployed. If you go to this URL, you should see your application live!
|
|
|
|
## Change some code and re-deploy
|
|
|
|
This repository is already configured to deploy the code in the directory `./todoapp`, so you can change some code (or replace the app code with another react app!) and re-run the following command to re-deploy when you want your changes to be live:
|
|
|
|
```sh
|
|
dagger up
|
|
```
|
|
|
|
## Under the hood
|
|
|
|
This example showed you how to deploy and develop on an application that is already configured with dagger. Now, let's learn a few concepts to help you understand how this was put together.
|
|
|
|
### The Environment
|
|
|
|
An Environment holds the entire deployment configuration.
|
|
|
|
You can list existing environment from the `./todoapp` directory:
|
|
|
|
```sh
|
|
dagger list
|
|
```
|
|
|
|
You should see an environment named `s3`. You can have many environments within your app. For instance one for `staging`, one for `dev`, etc...
|
|
|
|
Each environment can have different kind of deployment code. For example, a `dev` environment can deploy locally, a `staging` environment can deploy to a remote infrastructure, and so on.
|
|
|
|
### The plan
|
|
|
|
The plan is the deployment code, that includes the logic to deploy the local application to an AWS S3 bucket. From the `todoapp` directory, you can list the code of the plan:
|
|
|
|
```sh
|
|
ls -l .dagger/env/s3/plan/
|
|
```
|
|
|
|
Any code change to the plan will be applied during the next `dagger up`.
|
|
|
|
### The inputs
|
|
|
|
The plan can define one or several `inputs` in order to take some information from the user. Here is how to list the current inputs:
|
|
|
|
```sh
|
|
dagger input list
|
|
```
|
|
|
|
The inputs are persisted inside the `.dagger` directory and pushed to your git repository. That's why this example application worked out of the box.
|
|
|
|
### The outputs
|
|
|
|
The plan defines one or several `outputs`. They can show useful information at the end of the deployment. That's how we read the deploy `url` at the end of the deployment. Here is the command to list all inputs:
|
|
|
|
```sh
|
|
dagger output list
|
|
```
|
|
|
|
## What's next?
|
|
|
|
At this point, you have deployed your first application using dagger and learned some dagger commands. You are now ready to [learn more about how to program dagger](/programming).
|