cargo-shuttle
cargo-shuttle
is your commandline tool for deploying web apps on shuttle, the stateful serverless web platform for Rust.
README Sections: Installation β Subcommands β Development
cargo-shuttle
brings shuttle, the open source serverless platform for Rust web applications, into your terminal. With a dedicated focus on productivity, reliability, and performance, cargo-shuttle
makes deploying your code to the cloud as easy as deriving a trait.
Installation
cargo-shuttle
is available for macOS, Linux, and Windows. To install the commandline tool, run:
Distro Packages
Arch Linux
cargo-shuttle
can be installed from the community repository using pacman:
Subcommands
cargo-shuttle
's subcommands help you build and deploy web apps from start to finish.
Run cargo shuttle help
to see the basic usage:
Usage: cargo-shuttle [OPTIONS] <COMMAND>
Commands:
deploy deploy a shuttle service
deployment manage deployments of a shuttle service
init create a new shuttle service
generate generate shell completions
status view the status of a shuttle service
logs view the logs of a deployment in this shuttle service
clean remove artifacts that were generated by cargo
stop stop this shuttle service
secrets manage secrets for this shuttle service
login login to the shuttle platform
logout log out of the shuttle platform
run run a shuttle service locally
feedback Open an issue on github and provide feedback
project manage a project on shuttle
help Print this message or the help of the given subcommand(s)
Options:
--api-url <API_URL> run this command against the api at the supplied url (allows targeting a custom deployed instance for this command only) [env: SHUTTLE_API=]
--working-directory <WORKING_DIRECTORY> Specify the working directory [default: .]
--name <NAME> Specify the name of the project (overrides crate name)
-h, --help Print help
-V, --version Print version
Subcommand: init
To initialize a shuttle project with boilerplates, run cargo shuttle init [OPTIONS] [PATH]
.
Currently, cargo shuttle init
supports the following frameworks:
--actix-web
: for actix web framework--axum
: for axum framework--poem
: for poem framework--poise
: for poise discord bot framework--rocket
: for rocket framework--salvo
: for salvo framework--serenity
: for serenity discord bot framework--thruster
: for thruster framework--tide
: for tide framework--tower
: for tower library--warp
: for warp framework
For example, running the following command will initialize a project for rocket:
This should generate the following dependency in Cargo.toml
:
= "0.5.0-rc.2"
= { = "0.17.0" }
= { = "0.17.0" }
= { = "1.26.0" }
The following boilerplate code should be generated into src/lib.rs
:
extern crate rocket;
async
Subcommand: run
To run the shuttle project locally, use the following command:
# Inside your shuttle project
This will compile your shuttle project and start it on the default port 8000
. Test it by:
Subcommand: login
Use cargo shuttle login
inside your shuttle project to generate an API key for the shuttle platform:
# Inside a shuttle project
This should automatically open a browser window with an auto-generated API key for your project. Simply copy-paste the API key back in your terminal or run the following command to complete login:
Subcommand: deploy
To deploy your shuttle project to the cloud, run:
Your service will immediately be available at {crate_name}.shuttleapp.rs
. For instance:
Subcommand: status
Check the status of your deployed shuttle project with:
Subcommand: logs
Check the logs of your deployed shuttle project with:
Subcommand: stop
Once you are done with a deployment, you can stop it by running:
Development
Thanks for using cargo-shuttle
! Weβre very happy to have you with us!
During our alpha period, API keys are completely free and you can deploy as many services as you want.
Just keep in mind that there may be some kinks that require us to take all deployments down once in a while. In certain circumstances we may also have to delete all the data associated with those deployments.
To contribute to cargo-shuttle
or stay updated with our development, please open an issue, discussion or PR on Github and join our Discord! π