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:3000docker compose文件有助于避免每次打开容器时在终端中键入冗长的命令。它用于定义多个服务及其环境变量、端口、卷等。
使用docker build命令构建容器后,“docker-compose up”命令用于调出容器并开始监听指定端口中的请求。可以通过访问http://localhost:3000查看托管的网页。HOST_PORT在docker-compose.yaml文件中指定。如图: