为了账号安全,请及时绑定邮箱和手机立即绑定

在 Docker 容器中部署 Go Lambda

在 Docker 容器中部署 Go Lambda

Go
波斯汪 2023-01-03 16:48:02
我有一个 Go Lambda 函数。我想将该功能托管在 Docker 映像/容器中,以便我可以在本地对其进行测试。在这项工作中,我遵循了此处提供的说明。根据这些说明,我有以下文件:.文件go.modgo.sum主程序这些文件包含以下内容:Dockerfile(本节中 Dockerfile 的副本)FROM alpine as build # install build tools RUN apk add go git RUN go env -w GOPROXY=direct # cache dependencies ADD go.mod go.sum ./ RUN go mod download  # build ADD . . RUN go build -o /main # copy artifacts to a clean image FROM alpine COPY --from=build /main /main ENTRYPOINT [ "/main" ]go.mod(这个 go.mod的更新版本)module maingo 1.18require (     github.com/aws/aws-lambda-go v1.32.1     github.com/aws/aws-sdk-go v1.44.60) require github.com/jmespath/go-jmespath v0.4.0 // indirect我可以成功运行:go mod tidygo build我还可以使用以下方法成功构建和运行我的 Docker 映像:docker build -t lambda-fn . docker run -d -v ~/.aws-lambda-rie:/aws-lambda --entrypoint /aws-lambda/aws-lambda-rie  -p 9000:8080 lambda-fn:latest /mainlambda-fn我可以在 Docker 桌面中看到一个基于所列图像的容器,状态为“正在运行”。但是,当我发送以下 cURL 请求时,没有任何反应:curl -XPOST "http://localhost:9000/2015-03-31/functions/function/invocations" -d '{}'我期望根据handleRequest函数的内容编写一些日志。我究竟做错了什么?
查看完整描述

1 回答

?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

如果您以恶魔模式 (-d) 运行,则看不到日志。

删除 -d 并重新运行命令

这是由于空的处理程序注册。您可以通过传递额外参数来设置处理程序名称

docker run -d -v ~/.aws-lambda-rie:/aws-lambda --entrypoint /aws-lambda/aws-lambda-rie  -p 9000:8080 lambda-fn:latest /main handleRequest

//img1.sycdn.imooc.com//63b3ed370001e50c06510105.jpg

查看完整回答
反对 回复 2023-01-03
  • 1 回答
  • 0 关注
  • 89 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信