在本地運行它按預期作業,但是,在 docker 中運行它時,我無法訪問該站點。我所看到的一切都說確保系結到 0.0.0.0,我已經這樣了,所以我不知所措。
檔案
FROM rust:latest as builder
RUN apt-get update && apt-get -y install ca-certificates cmake musl-tools libssl-dev && rm -rf /var/lib/apt/lists/*
COPY . .
RUN rustup target add x86_64-unknown-linux-musl
ENV PKG_CONFIG_ALLOW_CROSS=1
RUN cargo build --target x86_64-unknown-linux-musl --release
FROM scratch
COPY --from=builder /target/x86_64-unknown-linux-musl/release/rusty-bits .
CMD ["/rusty-bits"]
Cargo.toml
[package]
name = "rusty-bits"
version = "0.1.0"
edition = "2018"
[dependencies]
actix-web = "3"
actix-rt = "2.0.0-beta.1"
主檔案
use actix_web::{web, App, HttpRequest, HttpServer, Responder};
async fn greet(req: HttpRequest) -> impl Responder {
let name = req.match_info().get("name").unwrap_or("World");
format!("Hello {}!", &name)
}
async fn health(_req: HttpRequest) -> impl Responder {
"OK"
}
#[actix_web::main]
async fn main() -> std::io::Result<()> {
HttpServer::new(|| {
App::new()
.route("/", web::get().to(greet))
.route("/{name}", web::get().to(greet))
.route("/health", web::get().to(health))
})
.bind(("0.0.0.0", 8000))?
.run()
.await
}
uj5u.com熱心網友回復:
我認為這里有兩個問題:
- 看起來您忘記添加
EXPOSE 8000到您的 dockerfile 中了。 - 由于您忘記添加公開,我認為您在運行影像時也忘記了系結埠:
docker run -p 8000:8000 image_name
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/378407.html
