HTTP 服务端实例
这个 HTTP 服务应用程序是基于 Rust 开发,并采用了 。
Kubernetes 可以使用 CRI-O、Docker 和 Containerd 来管理 wasm 应用程序生命周期。
这是一个 Rust 示例,它需要你先安装 Rust 和 以便可以编译运行 http 服务。
cargo build --target wasm32-wasi --release
wasm 字节码应用程序现在应该位于 ./target/wasm32-wasi/release/http_server.wasm
目录下。 你现在可以使用 wasmedge 测试运行它,然后将其发布为容器镜像。
chmod +x ./target/wasm32-wasi/release/http_server.wasm
你可以在另一个的终端窗口中测试这个服务端。
echo: name=WasmEdge
在 target/wasm32-wasi/release
文件夹中创建一个命名为 Dockerfile
的文件,其内容如下:
FROM scratch
ADD http_server.wasm /
CMD ["/http_server.wasm"]
crun
容器运行时可以启动上述基于 WebAssembly 的容器镜像。但它需要容器镜像上的 注释来表明它是一个没有客人操作系统(安装在虚拟机上的系统)的 WebAssembly 应用程序。你可以在官方 crun repo 中找到详细信息。
在 Ubuntu zesty 和 xenial 上,使用这些命令为 buildah 做准备。
然后,按照下列步骤在 Ubuntu 上编译和安装 buildah。
mkdir -p ~/buildah
cd ~/buildah
export GOPATH=`pwd`
git clone https://github.com/containers/buildah ./src/github.com/containers/buildah
cd ./src/github.com/containers/buildah
PATH=/usr/lib/go-1.16/bin:$PATH make
cp bin/buildah /usr/bin/buildah
buildah --help
创建和发布具备 buildah 的容器镜像
在 target/wasm32-wasi/release/
文件夹下,执行下列指令。
#
# make sure docker is install and running
# systemctl status docker
# to make sure regular user can use docker
# sudo usermod -aG docker $USER#
# newgrp docker
# You may need to use docker login to create the `~/.docker/config.json` for auth.
#
# docker login
好了! 现在你可以尝试在 或 Kubernetes 上运行它了!