使用 Docker Init 在 2 分鐘內容器化 Rust 應用
在 Docker Desktop 4.18 中 docker initCLI 可以爲項目生成 Docker 資源,使創建 Docker 鏡像和容器變得更加容易。
當你在項目目錄中運行 docker init 命令時,它將指導你使用合理的默認值爲項目創建必要的文件。這些文件包括:
- 1,.dockerignore
- 2,Dockerfile
- 3,docker-compose.yaml
docker init 命令還允許選擇項目使用的應用程序平臺和主包的相對目錄。
在這篇文章中,我們將通過使用 Rust 創建一個簡單的 web 應用程序,項目利用了 Warp 框架和 Tokio 異步運行時的強大功能。我們還將利用 Docker 容器化我們的應用程序,使其易於部署和管理。在文章的最後,你將擁有一個在 Docker 容器中運行的功能齊全的 Rust web 應用程序。
在我們開始之前,確保你的機器上安裝了 Docker 桌面版本 4.18 或更高版本,這將使我們能夠有效地使用 Docker 的特性。
步驟 1:設置項目
首先,我們需要克隆包含示例應用程序的存儲庫。打開終端,運行以下命令:
git clone https://github.com/dockersamples/docker-init-demos
cd docker-init-demos/rust
cargo init
cargo build --release
這將創建一個新的 Rust 項目,並在發佈模式下構建它。
步驟 2:運行 Docker Init
接下來,我們將使用 docker Init CLI 爲我們的項目生成必要的 Docker 文件。執行如下命令:
docker init
我們會看到來自 docker Init CLI 的歡迎消息,然後按指導完成安裝過程。可能會遇到一個警告,表明一些 Docker 文件已經存在。當出現提示時,選擇覆蓋它們。下面是一個交互示例:
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!
文件創建後,可以查看它們並進行必要的調整。準備好後,運行以下命令啓動應用程序:
docker compose up -d --build
步驟 3:訪問應用程序
一旦應用程序開始運行,我們就可以在 web 瀏覽器中訪問它。打開瀏覽器,輸入:
http://localhost:3030
應該會看到一條來自 Docker 的友好消息,確認你的應用程序已經啓動並運行:
.
## ## ==
## ## ## ## ===
/""""""""""""""""___/ ===
{ / ===-
______ O __/
\ \ __/
_____/
Hello from Docker!
步驟 4:在 Docker 桌面儀表板上查看
最後,我們打開 Docker Desktop Dashboard 來查看正在運行的容器並輕鬆管理它們。這個接口提供了 Docker 環境的可視化表示,可以監視資源使用情況、日誌等。
總結
在這篇文章中,我們成功地使用 Rust、Warp 和 Tokio 創建了一個簡單的 web 應用程序,並使用 Docker 將其容器化。這種設置不僅簡化了部署,還增強了應用程序的可伸縮性和可維護性。你可以通過向 Rust 應用程序添加更多特性或嘗試不同的 Docker 配置來進一步探索。
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/Taw2TNRfYpd96OXYPSB_-w