在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
这些是我跑的命令:
-
docker build -t oror/rust-test
-
docker run -it -p 8080:8080 --rm -v $(pwd):/source -w /source oror/rust-test cargo run
-
docker ps
terminal输出
-
ifconfig
获取我的机器的IP地址:192.168.0.6
-
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议你从你的容器外面用防火墙或类似的东西来做。