Run a Ruby on Rails app
In this guide we create and deploy a Ruby on Rails application. To run this example, follow these steps:
-
Install the
kraft
CLI tool and a container runtime engine, e.g. Docker. -
Clone the
examples
repository andcd
into theexamples/ruby3.2-rails/
directory:
Make sure to log into Unikraft Cloud by setting your token and a metro close to you.
We use fra0
(Frankfurt, 🇩🇪) in this guide:
When done, invoke the following command to deploy this application on Unikraft Cloud:
The output shows the instance URL and other details:
In this case, the instance name is ruby32-rails-apa93
and the URL is https://aged-waterfall-qraz0s7d.dal0.kraft.host
.
They are different for each run.
Use curl
to query the Unikraft Cloud instance of the Python-based HTTP web server:
At any point in time, you can list information about the instance:
When done, you can remove the instance:
Customize your Application
To customize the application, update the files in the repository, listed below:
app/
andconfig/
: the contents to update the Rails setupKraftfile
: the Unikraft Cloud specificationDockerfile
: the Docker-specified application filesystem
The app/
and config/
directories contain files that are to overwrite generated Rails files:
These files add the configuration (controller, view, route) to print the Hello, World!
message in Rails.
They overwrite the generated Rails configuration to provide the application setup.
Update these files, and other files, with required contents for your own application.
Lines in the Kraftfile
have the following roles:
-
spec: v0.6
: The currentKraftfile
specification version is0.6
. -
runtime: ruby:3.2
: The Unikraft runtime kernel to use is Ruby 3.2. -
rootfs: ./Dockerfile
: Build the application root filesystem using theDockerfile
. -
cmd: ["/usr/bin/ruby", "/app/bin/rails", "server", "-b", "0.0.0.0"]
: Use/usr/bin/ruby /app/bin/rails server -b 0.0.0.0
as the starting command of the instance.
Lines in the Dockerfile
have the following roles:
-
The
RUN
lines install Rails and generate the default application setup for ahello
application. -
COPY . /app/
: Copies the local files (fromapp/
andconfig/
) to the application, overwriting generated contents to provide the user-specified application. -
FROM scratch
: Build the filesystem from thescratch
container image, to create a base image. -
COPY --from=build /app /app
: Copy the application directory to the filesystem.
The following options are available for customizing the application:
-
If only updating the implementation in the
app/
orconfig/
directories, or adding new directories or files to overwrite Rails generated files, no other change is required. -
If changing the application name, change the
hello
name inRUN rails generate controller hello
to a new one. The file names in theapp/
andconfig/
directories have to be similarly updated. -
More extensive changes may require expanding the
Dockerfile
with additionalDockerfile
commands.
Learn More
Use the --help
option for detailed information on using Unikraft Cloud:
Or visit the CLI Reference.