gpt4 book ai didi

docker - docker 中的 Rust actix_web 无法实现,为什么?

转载 作者:行者123 更新时间:2023-11-29 08:28:39 25 4
gpt4 key购买 nike

我正在尝试为我的 rust 程序制作一个 docker 容器,让我们看看

docker 文件

FROM debian

RUN apt-get update && \
apt-get -y upgrade && \
apt-get -y install git curl g++ build-essential

RUN curl https://sh.rustup.rs -sSf | bash -s -- -y

WORKDIR /usr/src/app

RUN git clone https://github.com/unegare/rust-actix-rest.git

RUN ["/bin/bash", "-c", "source $HOME/.cargo/env; cd ./rust-actix-rest/; cargo build --release; mkdir uploaded"]

EXPOSE 8080

ENTRYPOINT ["/bin/bash", "-c", "echo 'Hello there!'; source $HOME/.cargo/env; cd ./rust-actix-rest/; cargo run --release"]

要运行的命令:docker run -it -p 8080:8080 rust_rest_api/dev

但是从外部 curl -i -X POST -F files[]=@img.png 127.0.0.1:8080/upload 导致 curl: (56) Recv failure: Соединение разорвано другой стороной 即被 channel 的另一边拒绝

但在容器内:

root@43598d5d9e85:/usr/src/app# lsof -i
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
actix_003 6 root 3u IPv4 319026 0t0 TCP localhost:http-alt (LISTEN)

但是在没有 docker 的情况下运行程序可以正常工作并充分处理来自 curl 的相同请求。

和容器内部:

root@43598d5d9e85:/usr/src/app# curl -i -X POST -F files[]=@i.jpg 127.0.0.1:8080/upload
HTTP/1.1 100 Continue

HTTP/1.1 201 Created
content-length: 70
content-type: application/json
date: Wed, 24 Jul 2019 08:00:54 GMT

{"keys":["uploaded/5nU1nHznvKRGbkQaWAGJKpLSG4nSAYfzCdgMxcx4U2mF.jpg"]}

外面的问题是什么?

最佳答案

如果您像我一样按照 Actix 网站上的示例进行操作,您可能会编写如下内容或其变体:

fn main() {
HttpServer::new(|| {
App::new()
.route("/", web::get().to(index))
.route("/again", web::get().to(index2))
})
.bind("127.0.0.1:8088")
.unwrap()
.run()
.unwrap();
}

这里的问题是您要绑定(bind)到特定 IP,而不是使用 0.0.0.0 绑定(bind)到主机容器上的所有 IP。我和你有同样的问题,并通过将我的代码更改为解决了这个问题:

fn main() {
HttpServer::new(|| {
App::new()
.route("/", web::get().to(index))
.route("/again", web::get().to(index2))
})
.bind("0.0.0.0:8088")
.unwrap()
.run()
.unwrap();
}

这对你来说可能不是问题,如果没有看到运行服务器的代码,我无法知道。

关于docker - docker 中的 Rust actix_web 无法实现,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57177889/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com