go - 从 docker-compose 编译 WASM 文件
问题描述
我需要将 wasm 构建过程合并到 docker-compose 中。
运行 docker-compose 时出现以下错误:
can't load package: cannot find module providing package wasm.go: unrecognized import path "wasm.go": https fetch: Get "https://wasm.go/?go-get=1":
我尝试在 docker-compose.yml 旁边使用 go.mod ,但这给了我完全相同的错误。
以下是正在使用的文件。
码头工人-compose.yml
version : '3'
services:
mysql:
image: library/mysql:8.0
container_name: container_mysql
env_file:
- ./MySQL/.env
environment:
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: ${MYSQL_DATABASE}
volumes:
- ./MySQL/sql-scripts/test.sql:/docker-entrypoint-initdb.d/test.sql
phpmyadmin:
image: phpmyadmin/phpmyadmin
container_name: container_phpmyadmin
links:
- mysql
environment:
PMA_HOST: mysql
PMA_PORT: 3306
PMA_ARBITRARY: 1
restart: always
ports:
- 8183:80
app:
container_name: container_api
command: /bin/sh -c "./script.compile.wasm.sh"
env_file:
- ./Go/.env
build:
context: ./Go
ports:
- 9000:9000
restart: always
depends_on:
- mysql
wasm.go
package main
import (
"os"
"strconv"
"syscall/js"
)
func key(this js.Value, arg []js.Value) interface{} {
arg[0].Call("stopPropagation")
arg[0].Call("preventDefault")
return nil
}
func sum(this js.Value, args []js.Value) interface{} {
var rv interface{}
value1 := js.Global().Get("document").Call("getElementById", "num1").Get("value").String()
value2 := js.Global().Get("document").Call("getElementById", "num2").Get("value").String()
int1, _ := strconv.Atoi(value1)
int2, _ := strconv.Atoi(value2)
js.Global().Get("document").Call("getElementById", "result").Set("value", int1+int2)
return rv
}
func register_callbacks() {
js.Global().Set("key", js.FuncOf(key))
js.Global().Set("sum", js.FuncOf(sum))
}
func main() {
register_callbacks()
appKey := os.Getenv("APP_KEY")
js.Global().Get("document").Call("getElementById", "env").Set("value", appKey)
js.Global().Get("document").Call("getElementById", "env2").Set("value", "hardcoded")
select {}
}
script.compile.wasm.sh
#!/bin/sh
GOOS=js GOARCH=wasm go build -o ./Go/assets/main.wasm main.wasm.go
文件结构如下:
|app/docker-compose.yml
|app/wasm.go
|app/script.compile.wasm.sh
|app/Go
|app/Go/assets
单独运行脚本工作正常
app$ ./script.compile.wasm.sh
解决方案
推荐阅读
- javascript - 从类方法调用函数
- git - 詹金斯创建一个工作来构建许多回购
- c++ - vs2005 项目不是从命令行编译,而是在 Visual Studio 中编译
- android - 使用 Firebase Auth 在 Android 上执行 Flutter 项目时出错
- javascript - 如何使用 node.js 在 mysql 中查看存储为 blob 的图像/照片?
- java - 如何接收 RTP 流并提取音频?(爪哇)
- java - 我如何使用 esper 订购活动?
- windows - 将组策略明确定义为“No One”——有风险吗?
- python - 如何在python的数组中获取特定数字的坐标?
- reactjs - 使用 Sinon 存根 React useState