amazon-web-services - 带有无服务器的 Docker - 文件未打包到容器中
问题描述
我有一个使用 Localstack 的无服务器应用程序,我正在尝试通过 Docker 完全运行。我有一个为我启动 localstack 的 docker-compose 文件。
version: '3.1'
services:
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"
当我运行 docker-compose up 然后使用 SLS deploy 将我的应用程序部署到 localstack 时,一切都按预期工作。虽然我希望 docker 为我运行一切,所以我将运行 Docker 命令,它将启动 localstack 并将我的服务部署到它。
我在我的项目中添加了一个 Dockerfile 并添加了这个
FROM node:16-alpine
RUN apk update
RUN npm install -g serverless; \
npm install -g serverless-localstack;
EXPOSE 3000
CMD ["sls","deploy", "--host", "0.0.0.0" ]
然后我运行docker build -t serverless/docker .
,docker run -p 49160:3000 serverless/docker
但收到以下错误
This command can only be run in a Serverless service directory. Make sure to reference a valid config file in the current working directory if you're using a custom config file
我想如果我尝试在不正确的文件夹中运行 SLS deploy 会发生这种情况。所以我已经登录到 docker 容器并且看不到我想在那里运行的应用程序,我在打包它所需的 dockerfile 中缺少什么?
谢谢
解决方案
pwd
运行时在容器内执行命令。尝试
docker run -it serverless/docker pwd
错误显示,sls 无法在当前工作目录中找到配置文件。将配置文件添加到当前工作目录(在 Dockerfile 中包含此复制)或将其复制到容器中的特定位置并传入--config
CMD ( sls deploy --config
)
此命令只能在 Serverless 服务目录中运行。确保引用当前工作目录中的有效配置文件
推荐阅读
- sql - 如何自动将一个单元格中的多个文本字段转换为不同的行或其他格式以进行报告?
- c++11 - QComboBox currentIndexChanged 在 QGraphicsView 上无法正常工作
- angular - Firestore 中批量事务更新期间的问题
- javascript - Javascript fetch() 故障转移 URL
- api - 如何在单个 docker 容器中托管多个烧瓶应用程序?
- pointers - 由于自动生成的指针,无法在消息中嵌入消息
- apache-spark - 如何通过 Spark 运行 HDFS 文件系统命令?
- python - 在python中记录所有http请求
- node.js - EJS条件导入不显示html
- java - 2.1 企业 bean 上的资源引用标记