api*_*nam 3 containers rust docker yew trunk-rs
运行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"]
Run Code Online (Sandbox Code Playgroud)
Cargo.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"
Run Code Online (Sandbox Code Playgroud)
这在本地工作得很好,我尝试了多个浏览器
如果需要解决此问题,请参考源代码:https ://github.com/apinanyogaratnam/yew-whos-that-pokemon-client
任何帮助将不胜感激,谢谢
server listening at http://127.0.0.1:8080意味着服务器只接受来自 127.0.0.1(即 localhost)的连接。
在容器中,localhost 就是容器本身,因此您的程序不会接受来自容器外部的连接。
为了让它做到这一点,你应该让你的程序绑定到它0.0.0.0,这将使它接受来自任何地方的连接。
我不是 Rust 专家,但似乎有一个--address选项trunk serve可以用来告诉它要绑定到哪个地址。我还没找到例子。仅在这些发行说明0.0.0.0中,他们说出于安全原因将默认绑定地址从 更改为127.0.0.1,并引入了该--address选项以防您需要设置另一个地址。
更新:我尝试下载您的项目,如果我将 Dockerfile 中的 CMD 语句更改为
CMD ["trunk", "serve", "--release", "--address", "0.0.0.0"]
Run Code Online (Sandbox Code Playgroud)
有用。
| 归档时间: |
|
| 查看次数: |
680 次 |
| 最近记录: |