在Docker上运行生锈:从服务器清空回复

我想在泊坞窗容器中运行一个防锈网页应用程序。 我对这两种技术都很陌生,所以我开始简单。

这里是main.rs

 extern crate iron; use iron::prelude::*; use iron::status; fn main() { fn hello_world(_: &mut Request) -> IronResult<Response> { Ok(Response::with((status::Ok, "Hello World!"))) } Iron::new(hello_world).http("127.0.0.1:8080").unwrap(); } 

Cargo.toml

 [package] name = "docker" version = "0.1.0" [dependencies] iron = "*" 

Dockerfile (改编自本教程)

 FROM jimmycuadra/rust EXPOSE 8080 COPY Cargo.toml /source COPY src/main.rs /source/src/ CMD cargo run 

这些是我跑的命令:

  1. docker build -t oror/rust-test
  2. docker run -it -p 8080:8080 --rm -v $(pwd):/source -w /source oror/rust-test cargo run
  3. docker ps

terminal输出

  1. ifconfig获取我的机器的IP地址: 192.168.0.6
  2. curl 192.168.0.6:8080连接到我的铁锈网站的应用程序

curl:(52)来自服务器的空回复

我试过localhost:8080 ,我仍然得到相同的输出。 我错过了什么?

问题是您的Web服务器正在监听来自127.0.0.1(本地接口)的请求,但是来自您的容器内部。 从容器的angular度来看,你的主机在外面,所以你需要听取来自0.0.0.0的请求,那么它应该工作。

 Iron::new(hello_world).http("0.0.0.0:8080").unwrap(); 

如果你需要过滤你的请求来自哪里,我build议你从你的容器外面用防火墙或类似的东西来做。