• 如何使用Docker部署Rust web应用
  • 发布于 2个月前
  • 224 热度
    0 评论
Rust是一种非常快速和安全的系统编程语言,Rust因其web框架的速度而备受关注。在这篇文章中,我们将看到如何使用docker部署Rust web应用程序。

创建项目
使用cargo创建一个新项目:
cargo new --bin rust-docker-project
在Cargo.toml文件中添加依赖项:
[dependencies]
axum = "0.6.6"
tokio = { version = "1.0", features = ["full"] }
Axum是一个用户友好的web框架,它的学习曲线非常小。下面是在Axum框架中实现的最小hello world程序。
use axum::{response::Html, routing::get, Router};
use std::net::SocketAddr;

#[tokio::main]
async fn main() {
    // build our application with a route
    let app = Router::new().route("/", get(handler));
    // 堆代码 duidaima.com
    // run it
    let addr = SocketAddr::from(([0, 0, 0, 0], 3000));
    println!("listening on {}", addr);
    axum::Server::bind(&addr)
        .serve(app.into_make_service())
        .await
        .unwrap();
}

async fn handler() -> Html<&'static str> {
    println!("Request received\nSending response.");
    Html("<h1>Hello from Rust!</h1>")
}

Dockerfile
你可以将dockerfile视为组装应用程序的指导手册。我们编写这条指令,以便运行不同开发环境的任何人都可以用一个命令可靠地重新创建应用程序运行时环境。这有助于减少设置开发环境和部署期间所花费的时间。
FROM rust:latest

WORKDIR /usr/src/myapp
COPY . .
RUN cargo install --path .
CMD ["rust-docker-project"]
RUN是执行构建命令的指令,CMD将在运行容器时执行。dockerfile必须总是以一个from指令开始,该指令指定应用程序的父docker映像。在我们的例子中,最新的rust映像是从docker容器存储库中提取的。

这个Dockerfile只有5行,可以帮助创建应用程序的docker映像。将Dockerfile放置在与cargo相同的目录中。然后运行“docker build -t rust-docker-project .”。这将通过顺序执行dockerfile中的指令来构建docker映像。

.dockerignore
在构建docker映像之前,docker会读取根目录中的.dockerignore文件,并忽略其中指定的文件。该文件将有助于避免复制构建工件和缓存文件,这些文件在运行应用程序时不需要,或者从docker容器中构建。语法类似于.gitignore文件:
target/

Docker-Compose
docker-compose.yaml文件:
services:
  rust-docker:
    image: rust-docker-project
    ports:
      - 3000:3000
docker compose文件有助于避免每次打开容器时在终端中键入冗长的命令。它用于定义多个服务及其环境变量、端口、卷等。

使用docker build命令构建容器后,“docker-compose up”命令用于调出容器并开始监听指定端口中的请求。可以通过访问http://localhost:3000查看托管的网页。HOST_PORT在docker-compose.yaml文件中指定。如图:

用户评论