Awesome
Defang
Defang is a radically simpler way for developers to develop, deploy, and debug cloud applications.
This repo includes:
- Public releases of the Defang CLI; click here for the latest version
- Samples in Golang, Python, and Node.js that show how to accomplish various tasks and deploy them to the DOP using a Docker Compose file using the Defang CLI.
- Samples that show how to deploy an app using the Defang Pulumi Provider.
Getting started
- Read our Getting Started page
- Follow the installation instructions from the Installing page
- Take a look at our Samples folder for example projects in various programming languages.
- Try the AI integration by running
defang generate
- Start your new service with
defang compose up
Installing
Install the Defang CLI from one of the following sources:
-
Using the Homebrew package manager DefangLabs/defang tap:
brew install DefangLabs/defang/defang
-
Using a shell script:
eval "$(curl -fsSL s.defang.io/install)"
-
Using Go:
go install github.com/DefangLabs/defang/src/cmd/cli@latest
-
Using the Nix package manager:
- with Nix-Env:
nix-env -if https://github.com/DefangLabs/defang/archive/main.tar.gz
- or with Flakes:
nix profile install github:DefangLabs/defang#defang-bin --refresh
- with Nix-Env:
-
Using winget:
winget install defang
-
Using a PowerShell script:
iwr https://s.defang.io/defang_win_amd64.zip -OutFile defang.zip Expand-Archive defang.zip . -Force
-
Download the latest binary of the Defang CLI.
Support
- File any issues right here on GitHub
Command completion
The Defang CLI supports command completion for Bash, Zsh, Fish, and Powershell. To get the shell script for command completion, run the following command:
defang completion [bash|zsh|fish|powershell]
If you're using Bash, you can add the following to your ~/.bashrc
file:
source <(defang completion bash)
If you're using Zsh, you can add the following to your ~/.zshrc
file:
source <(defang completion zsh)
or pipe the output to a file called _defang
in the directory with the completions.
If you're using Fish, you can add the following to your ~/.config/fish/config.fish
file:
defang completion fish | source
If you're using Powershell, you can add the following to your $HOME\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
file:
Invoke-Expression -Command (defang completion powershell | Out-String)
Environment Variables
The Defang CLI recognizes the following environment variables:
COMPOSE_PROJECT_NAME
- The name of the project to use; overrides the name in thecompose.yaml
fileDEFANG_ACCESS_TOKEN
- The access token to use for authentication; if not specified, uses token fromdefang login
DEFANG_CD_BUCKET
- The S3 bucket to use for the BYOC CD pipeline; defaults todefang-cd-bucket-…
DEFANG_CD_IMAGE
- The image to use for the Continuous Deployment (CD) pipeline; defaults topublic.ecr.aws/defang-io/cd:public-beta
DEFANG_DEBUG
- set this to1
ortrue
to enable debug loggingDEFANG_DISABLE_ANALYTICS
- If set totrue
, disables sending analytics to Defang; defaults tofalse
DEFANG_FABRIC
- The address of the Defang Fabric to use; defaults tofabric-prod1.defang.dev
DEFANG_HIDE_HINTS
- If set totrue
, hides hints in the CLI output; defaults tofalse
DEFANG_HIDE_UPDATE
- If set totrue
, hides the update notification; defaults tofalse
DEFANG_NO_CACHE
- If set totrue
, disables pull-through caching of container images; defaults tofalse
DEFANG_PREFIX
- The prefix to use for all BYOC resources; defaults toDefang
DEFANG_PROVIDER
- The name of the cloud provider to use,auto
(default),aws
,digitalocean
, ordefang
DEFANG_PULUMI_DIR
- Run Pulumi from this folder, instead of spawning a cloud task; requires--debug
(BYOC only)DEFANG_PULUMI_VERSION
- Override the version of the Pulumi image to use (aws
provider only)NO_COLOR
- If set to any value, disables color output; by default, color output is enabled depending on the terminalTZ
- The timezone to use for log timestamps: an IANA TZ name likeUTC
orEurope/Amsterdam
; defaults toLocal
XDG_STATE_HOME
- The directory to use for storing state; defaults to~/.local/state
Development
At Defang we use the Nix package manager for our dev environment, in conjunction with DirEnv.
To get started quickly, install Nix and DirEnv, then create a .envrc
file to automatically load the Defang developer environment:
echo use flake >> .envrc
direnv allow