Fundamentals
Deployment
Deployment is an extremely important part of the process, but one that most developers dread because it falls outside the developer's core business and into that of devops.
Build your bot app
The principal aim of Mineral is to simplify the developer experience. That's why we've created a simple command to build your application and create an executable. This executable is a single file that you can deploy anywhere, without having to worry about dependencies or other configuration. Besides, this allows you to share only the executable with your customers and not all the source code.
To build your application, you just have to run the following command at the root of your project.
dart run mineral compile:exe
Deploy your executable
With pm2
PM2 is a process manager based on NodeJS. It allows you to keep your application running in the background and to restart it automatically in case of a crash. To use it with your executable, you just have to run the following command.
pm2 start <your executable file>
Docker
Docker is a powerful cross-platform containerisation tool that is widely used in the professional world.
Before starting a deployment with Docker, please refer to the official documentation to ensure that your installation is correct.
Setup
Now that your installation is done, we will create a Dockerfile
at the root of our project with the following information.
In our instructions we use the official Docker image of the Dart language.
FROM dart:stable AS build
WORKDIR /app
COPY pubspec.* ./
RUN dart pub get
COPY . .
RUN dart pub get --offline
RUN dart compile exe ./src/main.dart -o ./mineral
# --
FROM scratch
COPY --from=build /runtime /
COPY --from=build /app/mineral /app/
CMD ["/app/mineral"]
In the first part, we build our application with the dart compile
command. This command will create an executable in the ./app
directory. In the second part, we rebuild a new image from scratch to reduce the size of our image. We copy the executable from the previous state and we define the command to run when the container starts.
Starting using Docker CLI
Now that the Docker image is configured, all we have to do is build it with the following command and then start it.
# Build the image
docker build -t <name>:latest .
# Starting our application
docker run -d --name <display name> <name>
Starting using Docker Compose
Docker Compose is a tool that allows you to manage multiple containers at the same time. It can be very useful if you want to deploy your application with a database for example.
To use it, you just have to create a docker-compose.yml
file at the root of your project with the following information.
version: "3.8"
services:
mineral:
build: .
environment:
APP_TOKEN: "<your token>"
LOG_LEVEL: info
DEBUGGER: false
restart: always
Then you just have to run the following command to start your application.
docker compose up -d
Congratulations, you have just deployed your first Discord application ! 🎉