我有一个 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
- 1 回答
- 0 关注
- 112 浏览
添加回答
举报
0/150
提交
取消