我正在使用带有Node.js的AWS Lambda开展项目。我们在开发环境中使用Docker容器。
我们当前的设置在端口上传输AWS SAM本地:3000。它运行start-api并在我的template.yml文件中安装函数。我使用postman测试这些函数,以便将JSON发送到已安装的API端点,如下所示:http://127.0.0.1:3000/foo
Docker设置还在:4000。
上旋转了一个单独的Node.js实例我能够如上所述在本地测试Lambda内容。但是,我想激活调试,以便我可以单步执行该函数并检查变量,而不是使用console.log()
。我无法弄清楚如何编辑Dockerfile / docker-compose.yml来实现这一目标。
这是我的docker-compose文件:
version: '3'
services:
web:
build: ./web
container_name: someapp
command: npm run dev
volumes:
- ./web:/usr/app/
- /usr/app/node_modules
ports:
- "4000:4000"
environment:
DATABASE_URL: mongo://someapp:someapp@10.10.62.205:37017,10.10.62.205:37018,10.10.62.205:37019/somedb
sam:
build: serverless/.
container_name: samlocal
command: sam local start-api --host 0.0.0.0
environment:
COMPOSE_CONVERT_WINDOWS_PATHS: 1
SAM_DOCKER_VOLUME_BASEDIR: ${CURRENT_DIRECTORY}/serverless
DATABASE_URL: mongo://someapp:someapp@10.10.62.205:37017,10.10.62.205:37018,10.10.62.205:37019/somedb
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./serverless:/var/opt
ports:
- "3000:3000"
这是SAM的Dockerfile,它位于名为"无服务器":
的目录中FROM alpine:3.6
ENV VERSION=0.2.2
RUN apk add --no-cache curl && \
curl -sSLO https://github.com/awslabs/aws-sam-local/releases/download/v${VERSION}/sam_${VERSION}_linux_386.tar.gz && \
tar -C /usr/local/bin -zxvf /sam_${VERSION}_linux_386.tar.gz && \
apk del curl && \
rm -f /sam_${VERSION}_linux_386.tar.gz
# awscli for "sam package" and "sam deploy"
RUN apk add --no-cache py-pip && pip install awscli
WORKDIR /var/opt
EXPOSE 3000
我尝试过将-d标志添加到" sam"的各种排列。在docker-compose.yml中的RUN指令中进行服务。例如:sam local start-api --host 0.0.0.0 --d 8080
。然后我尝试更改端口映射以公开它。但是,我无法弄清楚如何使端口映射工作。一旦我到达端点,我就会收到端口错误。
我还在使用docker / docker-compose和一个完整的nube来加速Lambda的东西,很抱歉,如果这个问题很愚蠢。
TIA!
答案 0 :(得分:0)
这是一篇介绍PyDev远程调试器的操作的文章,该调试器用于通过Eclipse IDE单步执行在Docker容器中运行的Lambda代码。
它是Python而不是Node,但可以帮助您大致了解运行在Docker容器中的调试脚本。