闽公网安备 35020302035485号
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>")
}
FROM rust:latest WORKDIR /usr/src/myapp COPY . . RUN cargo install --path . CMD ["rust-docker-project"]RUN是执行构建命令的指令,CMD将在运行容器时执行。dockerfile必须总是以一个from指令开始,该指令指定应用程序的父docker映像。在我们的例子中,最新的rust映像是从docker容器存储库中提取的。
target/
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文件中指定。如图: