Deployment
Deployment is super simple in Loco, and this is why this guide is super short. Although most of the time in development you are using cargo
when deploying, you use the binary that was compiled, there is no need for cargo
or Rust on the target server.
To deploy, build your production binary for your relevant server architecture:
$ cargo build --release
And copy your binary along with your config/
folder to the server. You can then run myapp start
on your server.
That's it!
We took special care that all of your work is embbedded in a single binary, so you need nothing on the server other than that.
Review your production config
There are a few configuration sections that are important to review and set accordingly when deploying to production:
- Logger:
logger:
level: <your production log level>
- Server:
server:
# Port on which the server will listen. the server binding is 0.0.0.0:{PORT}
port: 3000
# The UI hostname or IP address that mailers will point to.
host: http://localhost
- Database:
database:
# Database connection URI
uri: postgres://loco:loco@localhost:5432/loco_app
- Mailer:
mailer:
# SMTP mailer configuration.
smtp:
# Enable/Disable smtp mailer.
enable: true
# SMTP server host. e.x localhost, smtp.gmail.com
host: localhost
- Redis:
redis:
# Redis connection URI
uri: redis://127.0.0.1/
- JWT secret:
auth:
# JWT authentication
jwt:
# Secret key for token generation and verification
secret: ...
Generate
Loco offers a deployment template enabling the creation of a deployment infrastructure.
)
Deployment Options:
- Docker:
- Generates a Dockerfile ready for building and deploying.
- Creates a .dockerignore file.
- Shuttle:
- Generates a shuttle main function.
- Adds
shuttle-runtime
andshuttle-axum
as dependencies. - Adds a bin entrypoint for the deployment.
- Nginx:
- Generates a nginx configuration file for reverse proxying.
Choose the option that best fits your deployment needs. Happy deploying!
If you have a preference for deploying on a different cloud, feel free to open a pull request. Your contributions are more than welcome!