首页 > 解决方案 > 无服务器 + 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

标签: amazon-web-servicesdockerdocker-composeserverless-frameworklocalstack

解决方案


推荐阅读