【问题标题】:docker container didn't send any datadocker 容器没有发送任何数据
【发布时间】:2022-09-24 15:28:02
【问题描述】:

运行 docker build -t <IMAGE_NAME> . 然后运行 ​​docker run -p 8080:8080 <IMAGE_NAME> 记录到控制台它可以工作但 127.0.0.1:8080 不显示客户端

Dockerfile:

FROM rust:1.60.0-slim-buster

WORKDIR /app

COPY . .

RUN rustup target add wasm32-unknown-unknown
RUN cargo install --locked --version 0.15.0 trunk
RUN trunk build --release

EXPOSE 8080

CMD [\"trunk\", \"serve\", \"--release\"]

货运.toml

[package]
name = \"yew-whos-that-pokemon-client\"
version = \"0.1.0\"
edition = \"2021\"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
getrandom = { version = \"0.2.4\", features = [\"js\"] }
rand = \"0.8.5\"
reqwest = \"0.11.10\"
serde_json = \"1.0.81\"
wasm-bindgen-futures = \"0.4.30\"
web-sys = \"0.3.57\"
yew = \"0.19.3\"

这在本地工作得很好,我尝试了多个浏览器

如果需要解决此问题,请参考源代码:https://github.com/apinanyogaratnam/yew-whos-that-pokemon-client

任何帮助将不胜感激,谢谢

  • 你的项目也可以使用cargo run --release 吗?而不仅仅是在调试中......如果是这样,它是一个码头问题
  • 有点不同,因为主干的行为不同,所以在我的情况下,trunk serve 是选项,而不是使用 cargo 来运行我的应用程序。谢谢回复!

标签: docker rust containers trunk yew


【解决方案1】:

server listening at http://127.0.0.1:8080 表示服务器将只接受来自 127.0.0.1 的连接,即 localhost。

在容器中, localhost 就是容器本身,因此您的程序不会接受来自容器外部的连接。

为此,您应该将程序绑定到0.0.0.0,这将导致它接受来自任何地方的连接。

我不是 Rust 专家,但似乎在 trunk serve 上有一个 --address 选项,您可以使用它来告诉它要绑定到哪个地址。我一直找不到一个例子。只有这些release notes 他们说他们出于安全原因将默认绑定地址从0.0.0.0 更改为127.0.0.1,并引入了--address 选项以防您需要设置另一个地址。

更新:我尝试下载您的项目,如果我将 Dockerfile 中的 CMD 语句更改为

CMD ["trunk", "serve", "--release", "--address", "0.0.0.0"]

有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-25
    • 1970-01-01
    • 2021-10-03
    • 1970-01-01
    • 2015-12-01
    • 1970-01-01
    • 2020-05-01
    相关资源
    最近更新 更多