2017-05-21 2 views
2

Ich würde gerne eine Rost Web App in einem Docker Container laufen. Ich bin neu in beiden Technologien, also habe ich einfach angefangen.Running Rost auf Docker: Leere Antwort vom Server

ist hier 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 (von this Tutorial angepasst)

FROM jimmycuadra/rust 

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

Dies sind die Befehle, die ich lief:

  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 Ouput

  1. ifconfig meine Maschine der IP-Adresse zu erhalten: 192.168.0.6
  2. curl 192.168.0.6:8080 zu verbinden Meine Rost Web App

curl: (52) Leere Antwort vom Server

Ich habe localhost:8080 versucht, und ich immer noch die gleiche Leistung erhalten. Was fehlt mir?

+0

Wo haben Sie den Andock-Container bereitgestellt? Sie sollten auch prüfen, ob Sie wirklich '-p 8080: 80' wollen. –

+0

Ich habe es auf meinem lokalen Rechner bereitgestellt. Ich habe versucht, den Andock-Container ohne '-p 8080: 80' auszuführen; Das Docker-Image lief auf Port 32768. Ich versuchte, eine Verbindung zu '192.168.0.6: 32768' herzustellen, bekam aber die gleiche Antwort. – OReallyOReily

+0

Dieser Port hat nichts mit Ihrem Server zu tun, Sie sollten trotzdem über Port 8080 darauf zugreifen müssen. –

Antwort

4

Das Problem ist, dass Ihr Webserver Anfragen von 127.0.0.1 (lokale Schnittstelle) aber von innerhalb Ihres Containers abhört. Aus Sicht des Containers befindet sich Ihr Host im Freien, so dass Sie Anfragen von 0.0.0.0 hören müssen, dann sollte es funktionieren.

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

Wenn Sie zu filtern, wo Ihre Anfragen kommen, empfehle ich Ihnen, es mit einer Firewall oder so etwas wie das von außerhalb des Behälters zu tun.

+0

Vielen Dank! Das hat mein Problem gelöst – OReallyOReily

Verwandte Themen