输出结果
DOCKER_BUILDKIT=1 docker build --build-arg PLUGIN_NAME=request-block \
--build-arg THIS_ARCH= \
--build-arg GO_VERSION= \
--build-arg TINYGO_VERSION= \
-t request-block:20230213-170844-ca49714 \
-f DockerfileBuilder \
--output extensions/request-block .
[+] Building 84.6s (16/16) 0.0s
image: request-block:20230211-184334-f402f86
output wasm file: extensions/request-block/plugin.wasm
该命令最终构建出一个 wasm 文件和一个 Docker image。
这个本地的 wasm 文件被输出到了指定的插件的目录下,可以直接用于调试。
你也可以直接使用 `make build-push` 一并构建和推送 image.
### 参数说明
| 参数名称 | 可选/必须 | 默认值 | 含义 |
|------------------|-------|------------------------------------------|----------------------------------------------------------------------|
| `THIS_ARCH` | 可选的 | amd64 | 构建插件的机器的指令集架构,在非 amd64 架构的机器上构建时要手动指定。 |
| `PLUGIN_NAME` | 可选的 | hello-world | 要构建的插件名称。 |
| `REGISTRY` | 可选的 | 空 | 生成的镜像的仓库地址,如 `example.registry.io/my-name/`. 注意 REGISTRY 值应当以 / 结尾。 |
| `IMG` | 可选的 | 如不设置则根据仓库地址、插件名称、构建时间以及 git commit id 生成 | 生成的镜像名称。 |
| `GO_VERSION` | 可选的 | 1.19 | Go 版本号。 |
| `TINYGO_VERSION` | 可选的 | 0.26.0 | TinyGo 版本号。 |
## 本地构建
你也可以选择先在本地将 wasm 构建出来,再拷贝到 Docker 镜像中。这要求你要先在本地搭建构建环境。
编译环境要求如下:
- Go 版本: >= 1.18 (需要支持范型特性)
- TinyGo 版本: >= 0.25.0
下面是本地多步骤构建 [request-block](extensions/request-block) 的例子。
### step1. 编译 wasm
```bash
tinygo build -o main.wasm -scheduler=none -target=wasi ./extensions/request-block/main.go
```
### step2. 构建并推送插件的 docker 镜像
使用这份简单的 [dockerfile](./Dockerfile).
```bash
docker build -t