amazon-web-services - 无服务器 + Docker - 在 dockerfile 中添加命令会导致堆栈验证错误
问题描述
我有一个与 localstack 和 Docker 一起使用的无服务器项目。当我构建我的项目时,一切都按预期运行和工作。当我添加插件时
serverless-plugin-export-endpoints
https://github.com/ar90n/serverless-plugin-export-endpoints
到无服务器 yml 文件并添加
CMD ["sls","exportEndpoints" ]
它导致错误
ServerlessError: ValidationError: Stack with id pond5-api-local does not exist
这是我的 Dockerfile
FROM node:16-alpine
ARG SLS_DEBUG=*
RUN apk update
WORKDIR /app
RUN npm install -g serverless && \
npm install serverless-plugin-export-endpoints 0 && \
npm install -g serverless-localstack
COPY serverless.yml ./
COPY handler.py ./
COPY dynamo.py ./
COPY localstack_endpoints.json ./
EXPOSE 3000
CMD ["sls","deploy" ]
CMD ["sls","exportEndpoints" ]
这是我的 Docker-compose 文件
version: '3.1'
services:
api:
build: .
image: pond5/items_api
environment:
- SLS_DEBUG=*
depends_on:
- localstack
ports:
- '49160:3000'
container_name: items_api
localstack:
image: localstack/localstack:latest
environment:
- AWS_DEFAULT_REGION=us-east-1
- EDGE_PORT=4566
- SERVICES=lambda,s3,cloudformation,sts,apigateway,iam,route53,dynamodb
ports:
- '4566-4597:4566-4597'
volumes:
- "${TEMPDIR:-/tmp/localstack}:/temp/localstack"
- "/var/run/docker.sock:/var/run/docker.sock"
我添加的只是这个到我的 serverless.yml 文件中
plugins:
- serverless-plugin-export-endpoints
可能值得一提的是,我正在为 localhost 运行此配置
provider:
name: aws
runtime: python3.8
region: us-east-1
stage: local
custom:
tableName: 'items-table-${self:provider.stage}'
environment:
ITEMS_TABLE: ${self:custom.tableName}
AWS_ACCESS_KEY_ID: 123
AWS_SECRET_ACCESS_KEY: 143
AWS_DEFAULT_REGION: us-east-1
localstack:
region: us-east-1
debug: true
stages:
- local
host: http://host.docker.internal
解决方案
推荐阅读
- python - H2O AutoMachineLearning 如何决定模型顺序?
- snakemake - 通配符对某些规则的链/依赖关系
- python - 我该如何解决这个不能 ImportError: cannot import name in python3
- node.js - 如何使用 Node.js、Express、MS SQL 编写 GET REST API 以将数据插入到具有多个参数的数据库中?
- node.js - 我在哪里可以找到任何 NodeJS 版本的重大更改列表
- python - 为什么'return'在生成器方法中不起作用?
- reporting-services - SSRS 浏览器的渲染与 SSDT 不同
- java - JavaFX 的 ImageView 中的屏幕共享
- azure-ad-b2c - 如果用户不是成人,则尝试获取用户的出生日期
- python - pyenv:没有这样的命令“virtualenv”