Simple devcontainer for Go development
Just click the button:
Note this assumes that you have the VS code support for remote containers and docker
installed
on your machine.
git clone https://github.com/dev-wasm/dev-wasm-go
cd dev-wasm-go
code ./
Visual studio should prompt you to see if you want to relaunch the workspace in a container, you do.
# Build with TinyGo
tinygo build -target=wasi -o main.wasm main.go
# Or Build with Golang native
GOOS=wasip1 GOARCH=wasm go build -o main.wasm main.go
# Run it
wasmtime --dir .::/ main.wasm
There is an example of web serving via the WASI-HTTP API
in webserver/wasi-http
.
To build:
# Install the wit interface files, this only needs to be done once.
cd lib/wasi
make wasi-http
# Return to root
cd ../../
# Build the wasm component
cd webserver/wasi-http
make clean
make default
make run
Once it is running you can connect to it via http://localhost:8080
There is an example of web serving via WebAssembly + CGI (WAGI) in
the webserver/wagi
directory. It uses the lighttpd web server and mod_cgi
.
See the webserver/lighttpd.conf
file for more details.
tinygo build -target=wasi -o wagi.wasm webserver/wagi.go
lighttpd -D -f webserver/lighttpd.conf
Once the server is running, VS Code or Codespaces should prompt you to connect to the open port.
There is a more complicated example in the http
directory which shows an example
of making an HTTP client call using the experimental wasi-http support in wasmtime
.