Containerize Rust Application in 2 Minutes using Docker Init

Introduced for the first time in Docker Desktop 4.18, the new docker init CLI generates Docker assets for projects, making it easier to create Docker images and containers. When you run the docker init command in your project directory, it will guide y…


This content originally appeared on DEV Community and was authored by Ajeet Singh Raina

Introduced for the first time in Docker Desktop 4.18, the new docker init CLI generates Docker assets for projects, making it easier to create Docker images and containers. When you run the docker init command in your project directory, it will guide you through the creation of the necessary files for your project with sensible defaults. These files include:

  • .dockerignore
  • Dockerfile
  • docker-compose.yaml

The docker init command also allows you to choose the application platform that your project uses and the relative directory of your main package.

In this blog post, we will walk through the process of creating a simple web application using Rust, leveraging the power of the Warp framework and the Tokio asynchronous runtime. We will also utilize Docker to containerize our application, making it easy to deploy and manage. By the end of this guide, you will have a fully functional Rust web application running in a Docker container.

Prerequisites

Before we begin, ensure that you have Docker Desktop version 4.18 or above installed on your machine. This will allow us to use Docker's features effectively.

Step 1: Setting Up the Project

First, we need to clone the repository that contains our sample application. Open your terminal and run the following commands:

git clone https://github.com/dockersamples/docker-init-demos
cd docker-init-demos/rust
cargo init
cargo build --release

This will create a new Rust project and build it in release mode.

Step 2: Running Docker Init

Next, we will use the Docker Init CLI to generate the necessary Docker files for our project. Run the following command:

docker init

You will see a welcome message from the Docker Init CLI, guiding you through the setup process. You may encounter a warning indicating that some Docker files already exist. When prompted, choose to overwrite them. Here’s a sample interaction:

Welcome to the Docker Init CLI!

This utility will walk you through creating the following files with sensible defaults for your project:
  - .dockerignore
  - Dockerfile
  - compose.yaml

WARNING: The following Docker files already exist in this directory:
  - .dockerignore

? Do you want to overwrite them? Yes
? What application platform does your project use? Rust
? What version of Rust do you want to use? 1.70.0
? What port does your server listen on? 3030

CREATED: .dockerignore
CREATED: Dockerfile
CREATED: compose.yaml

✔ Your Docker files are ready!

Once the files are created, you can review them and make any necessary adjustments. When you're ready, start your application by running:

docker compose up --build

Step 3: Running Docker Compose

To run your application in the background, execute the following command:

docker compose up -d --build

This command will build your Docker images and start the containers defined in your compose.yaml file.

Step 4: Accessing the Application

Once your application is running, you can access it in your web browser. Open your browser and navigate to:

http://localhost:3030

You should see a friendly message from Docker, confirming that your application is up and running:

.

## ##        ==

## ## ## ##    ===

/""""""""""""""""___/ ===

{                       /  ===-

______ O           __/

\    \         __/

_____/



Hello from Docker!

Step 5: Viewing It on Docker Desktop Dashboard

rust-example

Finally, you can open the Docker Desktop Dashboard to view your running containers and manage them easily. This interface provides a visual representation of your Docker environment, allowing you to monitor resource usage, logs, and more.

Conclusion

In this blog post, we successfully created a simple web application using Rust, Warp, and Tokio, and containerized it with Docker. This setup not only simplifies deployment but also enhances the scalability and maintainability of your application. Feel free to explore further by adding more features to your Rust application or experimenting with different Docker configurations. Happy coding!


This content originally appeared on DEV Community and was authored by Ajeet Singh Raina


Print Share Comment Cite Upload Translate Updates
APA

Ajeet Singh Raina | Sciencx (2024-11-12T03:32:04+00:00) Containerize Rust Application in 2 Minutes using Docker Init. Retrieved from https://www.scien.cx/2024/11/12/containerize-rust-application-in-2-minutes-using-docker-init/

MLA
" » Containerize Rust Application in 2 Minutes using Docker Init." Ajeet Singh Raina | Sciencx - Tuesday November 12, 2024, https://www.scien.cx/2024/11/12/containerize-rust-application-in-2-minutes-using-docker-init/
HARVARD
Ajeet Singh Raina | Sciencx Tuesday November 12, 2024 » Containerize Rust Application in 2 Minutes using Docker Init., viewed ,<https://www.scien.cx/2024/11/12/containerize-rust-application-in-2-minutes-using-docker-init/>
VANCOUVER
Ajeet Singh Raina | Sciencx - » Containerize Rust Application in 2 Minutes using Docker Init. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2024/11/12/containerize-rust-application-in-2-minutes-using-docker-init/
CHICAGO
" » Containerize Rust Application in 2 Minutes using Docker Init." Ajeet Singh Raina | Sciencx - Accessed . https://www.scien.cx/2024/11/12/containerize-rust-application-in-2-minutes-using-docker-init/
IEEE
" » Containerize Rust Application in 2 Minutes using Docker Init." Ajeet Singh Raina | Sciencx [Online]. Available: https://www.scien.cx/2024/11/12/containerize-rust-application-in-2-minutes-using-docker-init/. [Accessed: ]
rf:citation
» Containerize Rust Application in 2 Minutes using Docker Init | Ajeet Singh Raina | Sciencx | https://www.scien.cx/2024/11/12/containerize-rust-application-in-2-minutes-using-docker-init/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.